- •Лабораторна робота № 1
- •Лабораторна робота № 2
- •Лабораторна робота № 3
- •Лабораторна робота № 4
- •Лабораторна робота № 5
- •Зміст роботи: створити запити мовою sql з використанням інструкцій insert, delete, update.
- •Лабораторна робота № 6
- •Зміст роботи: створити підпорядковані запити мовою sql.
- •Лабораторна робота № 7
- •Лабораторна робота № 8
Лабораторна робота № 6
Тема: «Підпорядковані запити»
Мета: Навчитися створювати підпорядковані запити
Зміст роботи: створити підпорядковані запити мовою sql.
Форма звіту:
створені запити
протокол лабораторної роботи
Теоретичні відомості
Підпорядковані запити - це SELECT-запити упроваджені в тіло іншого SELECT-запиту. Зовнішній оператор SELECT використовує результат виконання внутрішнього оператора для визначення змісту остаточного результату всієї операції. Внутрішні запити можуть бути поміщені в інструкції WHERE і HAVING зовнішнього оператора SELECT - в цьому випадку вони одержують назву підзапитів або вкладених запитів. Крім того, внутрішні оператори SELECT можуть використовуватися в операторах INSERT, UPDATE, DELETE.
Існує три типу підзапитів:
скалярний підзапит; повертає єдине значення.
строковий підзапит; повертає значення декількох стовпців таблиці, але у вигляді єдиного рядка.
табличний підзапит; повертає значення одного або більше стовпців таблиці, розміщені в більш ніж одному рядку. Табличний підзапит може використовуватися скрізь, де допускається указувати таблицю - наприклад, як операнд предиката IN.
Правила оформлення підпорядкованих запитів :
Текст підзапиту записується в круглих дужках.
У підзапитах не можна використовувати пропозицію ORDER BY.
У основному запиті не можна використовувати BETWEEN.
Підзапити, що повертають більше одного запису, можуть використовуватися тільки з багатозначними функціями.
Якщо підзапит є одним з двох операндів, що беруть участь в операції порівняння, то запит указується в правій частині порівняння.
Синтаксис вкладеного запиту нічим не відрізняється від синтаксиса головного запиту, і, отже, вкладений запит може, у свою чергу, містити підзапит.
Розглянемо декілька прикладів підпорядкованих запитів, які можна скласти на основі таблиці «Студенти». На рис. 6.1 представлено дані з таблиці «Студенти», до яких буде примінено наступні запити.
Рисунок 6.1 - Дані в таблиці «Студенти»
Приклади:
1. Наступний запит повертає прізвище студента, останнього у списку.
SELECT Прізвище
FROM Студенти
WHERE [Код студента]= (SELECT MAX ([Код студента]) FROM Студенти)
Результат виконання запиту представлено на рис. 6.2.
Рисунок 6.2 - Результат виконання запиту з завдання 1
2. Ускладнимо попередній приклад. Визначити прізвище останнього у списку студента та назву спеціальності, на якій він навчається.
SELECT Прізвище, Назва
FROM Студенти, Спеціальності
WHERE Спеціальності.[Код спеціальності]=Студенти.[Код спеціальності]
and [Код студента]= (SELECT MAX ([Код студента]) FROM Студенти)
В порівнянні з попереднім прикладом в запит включено внутрішнє з'єднання таблиць Студенти та Спеціальності. Результат виконання запиту представлено на рис. 6.3.
Рисунок 6.3 - Результат виконання запиту з завдання 2
3. Скласти список всіх студентів, що мають дату народження вищу за середню по всім студентам.
SELECT Прізвище
FROM Студенти
WHERE [Дата народження] >(SELECT AVG([Дата народження]) FROM Студенти)
Результат виконання запиту представлено на рис. 6.4.
Рисунок 6.2 - Результат виконання запиту з завдання 3
4. Скласти список студентів, чия дата народження менша дати народження всіх студентів третього курсу.
SELECT Прізвище
FROM Студенти
WHERE [Дата народження] <= ALL(SELECT [Дата народження]
FROM Студенти WHERE Курс=3)
ALL - умова пошуку буде істинна тоді, коли порівнюване значення знаходиться в потрібному відношенні зі всіма значеннями, що повертаються підзапитом. Результат виконання запиту представлено на рис. 6.5.
Рисунок 6.2 - Результат виконання запиту з завдання 4
З табличними підзапитами також використовується ключове слово ANY, яке указує, що умова пошуку істинна, коли порівнюване значення знаходиться в потрібному відношенні хоча б з одним значенням, підзапитом, що повертається. Крім того використовуються слова EXISTS і NOT EXISTS. Результат їх обробки є логічним значенням TRUE або FALSE. Для ключового слова EXISTS результат рівний TRUE тільки в тому випадку, якщо результуючій таблиці, що повертається запитом, присутній хоч би 1 рядок. Інакше - буде значення FALSE. Для NOT EXISTS - навпаки. Тобто за ключовими словами EXISTS і NOT EXISTS перевіряється наявність рядків в таблиці підзапиту (ця таблиця може містити довільне число стовпців).
Контрольні питання
Що таке вкладений запит?
Коли використовуються підзапити?
Як включити до головного запиту вкладений запит?
Коли використовуються оператор EXISTS?
Хід виконання роботи:
Створити запити мовою SQL:
Отримати прізвище наймолодшого студента спеціальності КСС
Отримати прізвища студентів, які отримали максимальну оцінку з дисципліни «Організація баз даних»
Зміст звіту:
Титульний лист
Постановка завдання
Запити мовою SQL
Результати виконання запитів
Відповіді на контрольні питання
Висновки
