
- •Лекції Мова запитів sql
- •1.Загальна характеристика
- •2.Особливості та переваги мови sql
- •3.Групи команд мови sql
- •4.Стандарт мови sql Типи даних sql
- •Операції та агрегатні функції.
- •Вибірка даних Оператор select
- •Речення from
- •Речення where
- •Речення group by
- •Речення having
- •Речення order by
- •Операція join
- •Вкладені підзапити
- •Операція union
- •Оператор select…into
- •Маніпулювання даними Оператор insert into
- •Оператор update
- •Оператор delete
- •Створення та знищення об’єктів бд
- •Створення бази даних
- •Оператор create table
- •Оператор alter table
- •Оператор drop
Вкладені підзапити
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 |
Математика |