Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL_Lektsii_original.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
241.66 Кб
Скачать

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

SQL дозволяє використовувати одні запти всередені інших запитів, тобто вкладати один запит у інший.

Прикад. Необхідно дізнатись прізвища студентів, вік яких дорівнює мінімальному. Для цього використаємо наступний запит.

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

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

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

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

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

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

Широко застосовується оператор IN.

Операція union

Дана операція створює запит на об’єднання, що поєднує результати кількох незалежних запитів або таблиць. Синтаксис:

[TABLE] <запит1> UNION [ALL] [TABLE] <запит2> [UNION [ALL] [TABLE] <запитX>[.][..]];

<запит1>, <запит2>, <запитХ> – інструкція SELECT, ім’я збереженого запиту або ім’я збереженої таблиці, перед яким стоїть зарезервоване слово TABLE.

За замовчуванням записи, що повторюються не повертаються при використанні операції UNION. Всі запити, включені в операцію UNION, повинні відбирати однакове число полів.

Приклад. Об’єднаємо два запити, один з яких ...... (табл. 11):

SELECT * ;

Таблиця 11

Surname

Name

Оператор select…into

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

SELECT <назва поля> [, …] INTO <нова таблиця> [IN <ЗБД>] FROM <ім’я таблиці> [, …] [IN <ЗБД>];

<назва поля> – поле, що копіюється у нову таблицю. <нова таблиця> – ім’я таблиці, що створюється. <ЗБД> – зовнішня БД; шлях до зовнішнього джерела. Запит на створення нової таблиці можна використати для створення резервних копій, як основу тощо.

Приклад. У подальшому може виникнути потреба опрацювання інформації про студентів, що вчаться по спеціальності інформатика. У цьому випадку доцільно створити нову таблицю, що буде містити інформацію тільки про цих студентів.

SELECT Num, Surname, Same, Age INTO Informatics FROM Students WHERE Speciality='Інформатика';

Після виконання даного запиту ми отримаємо нову таблицю Informatics (табл. 12), яка буде містити дані тільки про студентів зі спеціальністю інформатика.

Таблиця 12

Num

Surname

Name

Age

1

Крупик

Віктор

19

2

Прапій

Степан

19

3

Працків

Оксана

18

5

Ятрів

Олег

17

Маніпулювання даними Оператор insert into

Даний оператор додає запис або записи у таблицю. Він створює запит, що дописує записи у таблицю.

INSERT INTO <призначення> [(<назва поля>)[, …]] VALUES (<значення> [, …]);

<призначення> – ім’я таблиці у яку додають записи. <назва поля> – ім’я поля для дозапису даних, якщо відповідає аргументу призначення. <значення> – значення, що дозаписується у вказане поле. Розділяються комами, текстові значення беруться у лапки.

Якщо оператор INSERT INTO присутній у запиті, то він повинен знаходитись перед оператором SELECT.

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

Щоб дописати поля в таблицю з полем лічильника та заново пронумерувати додані записи, включати в запит поле лічильника не треба.

Приклад. З’явися новий студент. Необхідно занести у БД його дані. Для цього використаємо оператор INSERT INTO.

INSERT INTO Students ( num, Surname, Name, Age, Speciality ) VALUES (6, 'Куцик', 'Олександр', 16, 'Математика');

Даний запит додасть у кінець таблиці новий запис з інформацією про студента, що прибув (табл. 13).

Таблиця 13

Num

Surname

Name

Age

Speciality

1

Крупик

Віктор

19

Інформатика

2

Прапій

Степан

19

Інформатика

3

Працків

Оксана

18

Інформатика

4

Селань

Віктор

20

Математика

5

Ятрів

Олег

17

Інформатика

6

Куцик

Олександр

16

Математика

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