
- •Створення таблиць бази даних
- •Теоретичні відомості
- •1.1. Проектування бази даних
- •1.2. Створення таблиць з використанням Конструктора
- •1.3.2. Керуючий запит на створення таблиці
- •1.3.3. Запит на створення таблиці з інших таблиць
- •1.3.4. Запит на додавання
- •1.3.5. Запит на видалення
- •1.3.6. Запит на оновлення
- •Лабораторна робота №2 Проектування qbe-запитів
- •Теоретичні відомості
- •2.1. Прості запити
- •2.2. Конструктор запитів
- •2.3. Обчислення в запиті
- •2.4. Параметричні запити
- •2.5. Перехресні запити
- •Контрольні запитання
- •Лабораторна робота №3 Створення запитів на вибірку з допомогою мови sql
- •Теоретичні відомості
- •3.1. Структура запиту. Умови пошуку.
- •3.2. Параметричні запити
- •3.3. Перехресні запити
- •3.4. Пошук у зв'язаних таблицях
- •3.5. Агрегація даних і форматування результатів пошуку
- •3.6. Підлеглі запити
- •3.7. Запити на об'єднання
- •Контрольні запитання
- •Лабораторна робота №4 Створення форм
- •Теоретичні відомості
- •4.1. Автоформи
- •4.2. Створення форми за допомогою «Майстра форм»
- •4.3. Створення складеної форми
- •4.4. Створення діаграми
- •4.5. Додавання елементів управління у форму
- •Контрольні запитання
- •Лабораторна робота №5 Розробка звітів
- •5.1. Робота з простими звітами
- •5.2. Створення звіту за допомогою Майстра
- •5.3. Розробка звіту в режимі Конструктора
- •Контрольні запитання
- •Лабораторна робота №6 Створення бази даних побутової техніки
- •Список літератури
3.6. Підлеглі запити
Підлеглим запитом називається інструкція select, вкладена в інструкцію
SELECT, SELECT. .INTO, INSERT .. INTO, DELETE, UPDATE або у інший підлеглий запит. Підлеглий запит можна використовувати замість виразу в списку полів інструкції select або у виразах where і having. Можливі три варіанти синтаксису підлеглого запиту :
1) <вираз> <оператор порівняння> [ANY|ALL|SOME]
((<інструкція SELECT>)
<вираз> [NOT] IN (<інструкція SELECT>)
[NOT] EXISTS (<інструкція SELECT>)
Тут оператор порівняння - це арифметичний оператор порівняння, наприклад =. В підлеглих запитах не слід використовувати повні імена.
У першому варіанті вираз порівнюється з деякими або усіма значеннями стовпця, що повертається підлеглим запитом. Якщо не використовуються предикати any, all, some, то підлеглий запит повинен повертати тільки одне значення. Наприклад, щоб отримати оцінки студента Іванова, можна використати запит (якщо ми упевнені, що прізвище Іванов зустрічається тільки один раз)
Очевидно, що такий самий результат можна отримати, використовуючи об'єднання таблиць.
При використанні предиката all результат порівняння істинний, якщо істинні усі порівняння <вирази> зі значеннями, що повертаються підлеглим запитом. При використанні предиката any або його синоніма some результат істинний, якщо істинне хоча б одне порівняння <виразу> з будь-яким із значень, що повертаються підлеглим запитом.
У другому варіанті підлеглого запиту предикат in використовується для відбору в головному запиті тільки тих записів, які містять значення, рівні одному з відібраних підлеглим запитом. Предикат in використовується, якщо підлеглий запит повертає більш за одне значення, на відміну від предикатів any, all, some перевіряє тільки рівність значень.
У третьому варіанті підлеглого запиту предикат exists набуває значення Істина, якщо підлеглий запит повертає хоч би один рядок.
Якщо підлеглий запит посилається на запит або таблицю, вказану в пропозиції from зовнішнього запиту, то такий запит називається пов'язаним підлеглим запитом. Пов'язаний підзапит виконується для кожного рядка зовнішньої таблиці. Наприклад, знайдемо прізвища усіх атестованих студентів групи 01АО1 (запит дещо надуманий і його простіше реалізувати, використовуючи пов'язані таблиці) :
3.7. Запити на об'єднання
Це специфічні запити, які можуть бути створені тільки засобами SQL. Запит на об'єднання використовує оператор union і об'єднує результати декількох незалежних запитів або таблиць. Запит має наступний синтаксис:
Записи, що за умовчанням повторюються, не повертаються, предикат all гарантує повернення усіх записів. Усі запити, включені в операцію union, повинні відбирати однакове число полів, при цьому типи даних і розміри полів не обов'язково повинні співпадати. Як імена полів використовуються імена стовпців першої таблиці/запиту. За умовчанням рядки результату сортуються за збільшенням першого стовпця результату. Як остання пропозиція операції union може бути використана пропозиція order by, що дозволяє сортувати результат за декількома стовпцями. У цьому виразі використовуються номери стовпців або імена з першої таблиці/запиту. Псевдоніми можна використовувати тільки в першій таблиці/запиті, в інших вони пропускаються. У кожному з запитів, що об’єднуються, допускається використання пропозиції group by або having для групування результатів.