Подзапрос можно использовать в предложении FROM
инструкции SELECT
, что весьма похоже на использование представлений.
Подзапрос в предложении FROM
инструкции SELECT
называется также встроенным представлением. Подзапрос в предложении FROM
инструкции SELECT
определяет источник данных для этой конкретной инструкции SELECT
(и только для нее). Как и в случае представления базы данных, инструкция SELECT
в подзапросе может быть простой или сложной, в зависимости от потребностей.
Когда создается представление базы данных, связанная инструкция SELECT
хранится в словаре данных. В ситуациях, когда отсутствуют необходимые привилегии на создание представлений базы данных или когда требуется протестировать, пригодна ли инструкция SELECT
для создания представления, можно воспользоваться встроенным представлением.
Используя встроенные представления, можно хранить в одном месте весь программный код, необходимый для поддержки запроса. Это позволяет избежать сложности создания отдельного представления базы данных. В примере на рисунке показывается, как использовать встроенное представление для отображения названия отдела и города в Европе. Подзапрос в предложении FROM
реализует выборку идентификатора местоположения, названия города и страны путем объединения трех разных таблиц. Выходные данные внутреннего запроса рассматриваются как таблица для внешнего запроса. Внутренний запрос сходен с запросом представления базы данных, но не имеет никакого физического имени.
Для примера, показанного на рисунке, таблица loc
создается путем выполнения следующей инструкции:
CREATE TABLE loc AS SELECT * FROM locations; |
Такие же выходные данные, как и в примере на рисунке, можно вывести на экран, выполнив следующие два шага:
-
Создайте представление базы данных:
CREATE OR REPLACE VIEW european_cities AS SELECT l.location_id, l.city, l.country_id FROM loc l JOIN countries c ON(l.country_id = c.country_id) JOIN regions USING(region_id)
|
-
Объедините представление
EUROPEAN_CITIES
с таблицейDEPARTMENTS
:
SELECT department_name, city FROM departments
|
Далее: Функции CURRENT_DATE, CURRENT_TIMESTAMP и LOCALTIMESTAMP