Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція_Із_2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
260.61 Кб
Скачать

5.3 Вкладені підзапити

SQL дозволяє використовувати одні запити всередені інших запитів, тобто вкладати один запит у інший. При цьому верхнього рівня оператор SELECT використовує результат внутрішнього оператора SELECT для визначення отримання кінцевого результату всього запиту. Внутрішні оператори можуть бути розміщені у реченнях WHERE і HAVING і в такому разі отримують назву підзапитів, або вкладених запитів. Крім того, внутрішні оператори SELECT можуть використовуватись в операторах INSERT, UPDATE і DELETE.

Існує три типи підзапитів, а саме:

  • скалярний підзапит який повертає значення вибране із перетину одного стовпця і одного запису чи результату виразу;

  • рядковий підзапит який повертає значення декількох стовпців таблиці у вигляді одного рядка;

  • табличний підзапит який повертає значення одного чи більше стовпців таблиці розміщених у більше ніж одному рядку.

При побудові підзапитів потрібно дотримуватись наступних правил і обмежень:

  1. У підзапитах не повинна використовуватись фраза ORDER BY, хоча вона може бути присутня у зовнішньому запиті.

  2. Список у визначенні SELECT підзапиту повинні складатись із імен окремих стовпців або складених із них виразів за виключенням того випадку, коли у підзапиті використовується ключове слово EXIST. Дане слово використовується тільки разом із підзапитом і результатом його дії є логічне значення True чи False. Істина буде в тому випадку коли у результуючій таблиці підзапиту присутній хоча би один рядок.

  3. За замовчуванням імена стовпців у підзапиті відносяться до таблиці, ім’я якої вказано у фразі FROM.

  4. Якщо підзапит є одним із двох операндів, які беруть участь в операції порівняння, то підзапит повинен бути вказаний у правій частині даної операції.

  5. У вкладених підзапитах використовується предикат IN ( Select … From … Where … IN).

  6. У підзапитах, які повертають один стовпець числових значень, можуть використовуватись ключові слова ALL і ANY.

Якщо підзапиту буде передувати ключове ключове слово ALL, то умова порівняння вважається виконаною тільки в тому випадку, якщо воно виконується для всіх значень у результуючому стовпці підзапиту.

Якщо запиту, підзапиту передує ключове слово ANY, то умова порівняння буде вважатись виконаною, якщо вона виконується хоча би для одного із значень у результуючому стовпці підзапиту. Якщо в результаті виконання підзапиту буде отримано порожнє значення, то для слова ALL умова порівняння буде вважатись виконаною, а для ANY ні.

Приклад 12.

Вибрати прізвища студентів, вік яких дорівнює мінімальному.

Запит матиме вигляд:

SELECT Surname, Age FROM Students WHERE Age = ( SELECT MIN(Age) FROM Students );

У даному запиті спочатку вибереться мінімальний вік студентів, а тоді прізвища всіх студентів із мінімальним віком.

Вкладений підзапит працює наступним чином:

  1. вибирається рядок з таблиці, назва якого вказана у зовнішньому запиті;

  2. виконується підзапит і отримане значення застосовується для аналізу цього рядка в умові речення WHERE зовнішнього запиту;

  3. за результатами оцінки умови приймається рішення про включення або не включення рядка у склад вихідних даних;

  4. аналогічно процедура виконується для наступного рядка таблиці зовнішнього запиту.

У мові SQL можна використовувати стандартні операції над множинами, а саме: об’єднання, перетин і різниця, які дозволяють комбінувати результати виконання двох і більше запитів в одну результуючу таблицю.

На таблиці, які можуть комбінуватись з допомогою операцій над множинами накладаються певні обмеження, а саме:

– вони повинні мати одну і ту ж структуру, тобто одну і ту ж кількість стовпців;

– у відповідних стовпцях повинні міститись дані однакового типу і довжини.

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