Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7_17_27_37_47_57_ответы.docx
Скачиваний:
2
Добавлен:
17.09.2019
Размер:
50 Кб
Скачать

37. Подзапросы

Язык SQL позволяет использовать один запрос в качестве вспомогательного при вычислении результатов другого. Запрос, служащий частью более "крупного" запроса, принято называть подзапросом (subquery). Степень взаимной вложенности запросов не ограничивается и может быть произвольной. Вы уже знакомы с примерами подзапро­сов — в разделе 6.2.5 на с. 268 было показано, как с помощью операторов объедине­ния (union), пересечения (intersect) и разности (except) осуществляется слияние двух подзапросов с целью получения результата общего запроса. Существуют и другие способы использования подзапросов, перечисленные ниже.

  1. Запрос возвращает единственное значение, которое сравнивается с другим зна­чением в условии предложения where.

  2. Запрос возвращает отношение, используемое в предложении where с той или иной целью.

  3. Запрос оперирует отношениями, перечисленными в предложении from.

37. Подзапросы для вычисления скалярных значений

Атомарное значение, способное выступать в роли содержимого одного компонента кортежа отношения, называют скаляром (scalar). Запросы вида "select—from—where" могут возвращать отношения с любым числом атрибутов и произвольным количеством корте­жей. Однако зачастую требуется получить набор значений единственного атрибута. Бо­лее того, нередко результатом запроса является единственное значение, представляющее некоторый итог, вычисленный на основании содержимого целой группы компонентов.

Если запрос возвращает единственное значение, он может быть использован в ка­честве подзапроса, заключенного в круглые скобки и располагаемого в любом месте предложения where, где допустимо задать константу или имя атрибута .В этом случае операндом выражения сравнения будет значение, возвращаемое подзапросом.

37. Коррелированные подзапросы

Подзапросы самых простых типов могут выполняться только один раз, и их ре­зультаты используются во "внешних" запросах. В более сложных случаях подзапрос должен обрабатываться многократно, по одному разу для каждого значения, получае­мого подзапросом извне. Подобные подзапросы принято называть коррелированными (correlated subquery). Рассмотрим пример, иллюстрирующий сказанное.

  1. Простые объявления схем отношений

Конструкция объявления таблицы в своей простейшей форме состоит из пары служеб­ных слов create table, после которой задаются наименование отношения, подлежащего созданию, и список пар названий атрибутов и их типов, заключенный в круглые скобки.

  1. Модификация реляционных схем

Чтобы удалить (drop) отношение R из базы данных, достаточно выполнить команду

drop table r;

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

Гораздо чаще, однако, возникает необходимость изменения (altering) схемы сущест­вующего отношения. С этой целью используется команда вида alter table, содер­жащая наименование отношения, схема которого подлежит изменению, и одно из до­полнительных предложений, наиболее важными из которых являются следующие:

    1. add, с именем А атрибута и обозначением его типа ("добавить атрибут Л");

    2. drop, с именем А атрибута ("удалить атрибут А").

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]