Подзапросы

Подзапрос — форма команды SELECT, которая появляется внутри другого утверждения SQL. Подзапрос иногда называется вложенным запросом. Утверждение, содержащее подзапрос называется родительским выражением. Строки, возвращенные подзапросом, используются родительским выражением. Подзапросы могут использоваться для следующих целей:

Для определения множества строк, вставляемых в целевую таблицу выражениями INSERT или CREATE TABLE

Для определения одного или более значений, назначаемых существующим строкам в утверждении UPDATE

Для обеспечения необходимых условий в выражениях WHERE, HAVING утверждений SELECT, UPDATE, и DELETE

Чтобы определить таблицу, обрабатываемую запросом, подзапрос располагается после оператора FROM запроса вместо имени таблицы. Можно использовать подзапросы вместо таблиц таким же образом и в утверждениях INSERT, UDPATE и DELETE. Подзапросы, используемые таким образом, могут применять переменные корреляции, но только если эти переменные определены внутри самого запроса и не содержат внешних ссылок.

Пример 40. Чтобы определить, кто учится на той же специальности, что и студент 'Иванов', можно сначала использовать подзапрос, чтобы определить код специальности, на которой учится студент 'Иванов':

SELECT kod_s, fam FROM student WHERE kod_s = (SELECT kod_s FROM student WHERE fam = 'Иванов');

Подзапрос выполняется один раз для всего родительского утверждения, в отличие от соотнесенного подзапроса, который выполняется для каждой строки, обрабатываемой родительским утверждением. Подзапрос может и сам содержать подзапрос, уровень вложенности не ограничивается. Подзапрос можно использовать для создания копий таблиц.

Пример 41. Cоздадим копию таблицы STUDENT с именем NEWSTUD:

CREATE TABLE newstud (kod_stud, fam, stip) AS SELECT kod_stud, fam, stip FROM student;

В начало


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: