
- •1. Розвиток і загальна характеристика мови
- •2. Особливості та переваги мови sql
- •3. Групи команд мови sql
- •4. Мова sql — типи даних та функції
- •4.1 Типи даних sql
- •4.1.1 Символьні дані
- •4.1.2 Бітовий тип даних
- •4.1.3 Числові типи даних
- •4.1.4 Тип даних «дата/час»
- •4.2 Операції та агрегатні функції.
- •4.2.1. Реляційні операції
- •4.2.2. Булеві операції
- •4.2.3. Агрегатні функції
- •5. Мова sql - вибірка даних
- •5.1 Оператор select
- •5.1.1 Фраза from
- •5.1.2 Фраза where
- •5.1.3 Фраза group by
- •5.1.4 Фраза having
- •5.1.5 Фраза order by
- •5.2 Операція join — об’єднання таблиць
- •5.3 Вкладені підзапити
- •5.4 Операція union
- •5.5 Оператор select…into
- •Маніпулювання даними Оператор insert into
- •Insert into Students ( num, Surname, Name, Age, Speciality ) values (6, 'Куцик', 'Олександр', 18, 'Математика');
- •2 Оператор update
- •Оператор delete
- •Створення та знищення об’єктів бд
- •Створення бази даних
- •4.9.1 Оператор create table
- •4.9.2 Оператор alter table
- •Оператор drop
5.1.5 Фраза order by
Фраза ORDER BY є необов’язковою. Дана фраза сортує результуючі записи, що отримані після виконання запиту за зростанням або спаданням указаних полів чи поля. Його необхідно вказувати для сортування результату запиту. За замовчуванням задано порядок сортування за зростанням.
Синтаксис:
[ ORDER BY { <назва поля> [ ASC | DESC ] } [,…]]
<назва поля> – поле, за яким відбувається сортування. ASC (DESC) – зареєстровані слова для розташування елементів у зростаючому (спадному) порядку.
Приклад 11.
Вивести на екран всю інформацію про студентів, яка відсортована у спаданні за віком студентів, а потім у зростанні за їх прізвищами.
Запит матиме вигляд:
SELECT * FROM Students ORDER BY Age DESC, Surname ASC;
Результат – табл. 11
Таблиця 11
Num |
Surname |
Name |
Age |
Speciality |
6 |
Петрів |
Назар |
20 |
|
4 |
Селань |
Віктор |
20 |
Математика |
1 |
Крупик |
Віктор |
19 |
Інформатика |
2 |
Прапій |
Степан |
19 |
Інформатика |
3 |
Працків |
Оксана |
18 |
Інформатика |
5 |
Ятрів |
Олег |
17 |
Інформатика |
5.2 Операція join — об’єднання таблиць
Для задання об’єднання кількох таблиць у фразі FROM виконують операцію JOIN, яка реалізує операцію з’єднання реляційної алгебри.
Синтаксис:
FROM <таблиця1> [AS <,псевдонім>] [ INNER | LEFT | RIGHT | FULL ] JOIN <таблиця2> [AS <,псевдонім>] ON {<таблиця1>.<поле1>} <операція> {<таблиця2>.<поле2>}
Тут <таблиця1>, <таблиця2> – імена таблиць, записи яких підлягають об’єднанню; <поле1>, <поле2> – імена полів, що об’єднуються; якщо поля не є числовими, то повинні мати однаковий тип даних і містити дані одного виду; поля можуть мати різні імена, <операція> – будь-яка операція порівняння.
Якщо в результат вибірки необхідно включити всі рядки з обох таблиць, що задовольняють умові вибірки, використовується операція INNER JOIN. При цьому результуюча таблиця міститиме всі заголовки обох таблиць.
Нехай дано дві таблиці Т1 і Т2:
T1
-
F1
F2
A
100
B
101
C
102
D
103
T2
-
F3
F4
B
200
C
201
F
202
G
203
Задамо запит:
SELECT *
FROM
T1 INNER JOIN T2;
Результатом такого запиту буде таблиця :
F1 |
F2 |
F3 |
F4 |
A |
100 |
B |
200 |
B |
101 |
C |
201 |
C |
102 |
F |
202 |
D |
103 |
G |
203 |
Задамо запит:
SELECT * FROM T1 join T2 on T1.F1=T2.F3;
Результатом такого запиту буде таблиця 12, яка містить співпадаючі атрибути у полях F1 таблиці Т1 і F3 таблиці Т2:
Таблиця 12
F1 |
F2 |
F3 |
F4 |
B |
101 |
B |
200 |
C |
102 |
C |
201 |
Операція LEFT JOIN використовується для створення лівого зовнішнього об’єднання, при якому всі записи з першої (лівої) таблиці включаються в динамічний набір, навіть якщо в другій (правій) таблиці немає відповідних до них записів. Якщо у лругій таблиці, з якою виконується з’єднання, не має відповідних рядків, то замість значень її полів додається значення Null.
Задамо запит:
SELECT * FROM T1 left join T2 on T1.F1=T2.F3;
Результат – табл.13
Таблиця 13
F1 |
F2 |
F3 |
F4 |
A |
100 |
null |
null |
B |
101 |
B |
201 |
C |
102 |
C |
202 |
D |
103 |
null |
null |
Операція RIGHT JOIN використовується для створення правого зовнішнього об’єднання, при якому всі записи з другої (правої) таблиці включаються в динамічний набір, навіть якщо в першій (лівій) таблиці немає відповідних до них записів. Якщо у першій таблиці, з якою виконується з’єднання, не має відповідних рядків, то замість значень її полів додається значення Null.
Операції JOIN можуть бути вкладеними.
Синтаксис:
SELECT <поля> FROM <таблиця1> INNER JOIN ( <таблиця2> INNER JOIN [ ( ] <таблиця3> [INNER JOIN [ ( ] <таблицяX> [INNER JOIN…)] [ ON <таблиця3>.<поле3> <операція> <таблицяХ>.<полеХ> ] [ ON <таблиця2>.<поле2> <операція> <таблиця3>.<поле3>) ] ON <таблиця1>.<поле1> <операція>