- •1. Побудова нетривіальних запитів. Поняття нетривіального запиту та підзапиту
- •2. Типи підзапитів. Прості і корельовані підзапити
- •3. Скалярні підзапити. Функції в підзапиті
- •4. Підзапити у реченні having
- •5. Табличні підзапити
- •6. Використання операцій in і not in у нетривіальних запитах
- •7. Використання ключових слів any та all
- •8. Використання операцій exists (exist) та not exists
- •9. Реалізація операцій реляційної алгебри засобами sql
- •9.1. Операція вибірки
- •9.2. Операція проекції
- •9.3. Операція об'єднання
- •9.4. Операція взяття різниці
- •9.5. Операція перетину
- •Intersect
- •9.6. Декартів добуток таблиць
- •9.7. Операція з'єднання
- •9.8. Операція ділення
9.3. Операція об'єднання
Об'єднання двох таблиць містить ті рядки, що є або в першій, або в другій, або в обох таблицях.
Об'єднання ( UNION ) відношень А та В можна отримати в результаті їх злиття з утворенням одного відношення з виключенням кортежів-дублікатів
Відношення А та В мають бути сумісні за об'єднанням, тобто мати однакову кількість полів із співпадаючими типами даних
Реляційна алгебра: А UNION В
Оператор SQL:
SELECT *
FROM A
UNION
SELECT *
FROM B;
9.4. Операція взяття різниці
Різниця ( EXCEPT ) двох відношень А та В складається з кортежів, які є у відношенні А, але відсутні у відношенні В.
Різницею двох таблиць А є В є таблиця, що містить всі рядки, які присутні в таблиці А, але відсутні в таблиці S.
Відношення А та В мають бути сумісні за об'єднанням.
Реляційна алгебра: A MINUS B
Операція SQL:
SELECT *
FROM A
EXCEPT ( SELECT * FROM B;
SELECT *
FROM А
WHERE NOT EXISTS
(SELECT *
FROM В
WHERE А.а1=В.b1 AND B.b2=A.a2 AND…);
9.5. Операція перетину
Операція перетину ( INTERSECT ) визначає відношення, яке містить кортежі, присутні як у відношенні А, так і у відношенні В. Відношення А та В мають бути сумісні за об'єднанням
Перетином двох таблиць R та S є таблиця, що містить всі рядки, присутні в обох вихідних таблицях одночасно.
Реляційна алгебра: A INTERSECT B
SQL:
SELECT *
FROM A
Intersect
SELECT *
FROM B;
SELECT *
FROM А, В
WHERE А.a1=В.b1 AND А.a2=В.b2 AND … ;
SELECT *
FROM А WHERE А.a1 IN
(SELECT В.b1 FROM В
WHERE В.b1=А.a1) AND А.a2 IN
(SELECT В.b2 FROM В
WHERE В.b2=А.a2) AND …;
9.6. Декартів добуток таблиць
Декартів добуток АxВ двох відношень (двох таблиць) визначає нове відношення - результат конкатенації (тобто зчеплення) кожного кортежу (кожного запису) із відношення А з кожним кортежем (кожним записом) з відношення В .
Для одержання декартова добутку кількох таблиць треба указати у фразі FROM перелік таблиць, що перемножуються, а у фразі SELECT - усі їхні стовпці.
Реляційна алгебра: A TIMES B
SQL:
SELECT A.Поле1, A.Поле2, …, B...Поле1, B.Поле2, …
FROM A, B;
SELECT A.Поле1, A.Поле2, …, B...Поле1, B.Поле2, …
FROM A CROSS JOIN B;
9.7. Операція з'єднання
З'єднання - це підмножина декартова добутку
З'єднання - це процес, коли дві або більш за таблицю об'єднуються в одну
В SQL для завдання типу з'єднання таблиць в логічному наборі записів, з якого вибиратиметься необхідна інформація, використовується операція JOIN в реченні FROM
Формат операции:
FROM ім’я_таблиці_1 {INNER | LEFT | RIGHT} JOIN
ім’я_таблиці_2 ON умова_з'єднання
Різновиди операторів join та операцій з'єднання:
- cross join
- inner join
- outer join
Оператор CROSS JOIN повертає декартів добуток таблиць. Для отримання повного декартова добутку в списку вибору Select вказують ALL (*).
Select *
From T1 cross join T2;
Select T1.*, Т2.* From T1, T2;
Виконання Q-з’єднання забезпечує оператор INNER JOIN.
Select *
From T1 inner join T2 on T1.A = T2.C;
Виконання природного з’єднання забезпечує оператор INNER JOIN.
Select *
From T1 inner join T2 on T1.A = T2.А;
Select T1.*, Т2.*
From T1, T2 where T1.A = T2.А;
Зовнішнє з'єднання (OUTER JOIN) схоже на внутрішнє, але в результуючий набір даних включаються також записи провідної таблиці з'єднання, які об'єднуються з порожньою множиною записів іншої таблиці.
Яка з таблиць буде провідною, визначає вид з'єднання.
LEFT OUTER JOIN - ліве зовнішнє з'єднання, провідною є таблиця, розташована зліва від виду з'єднання.
RIGHT OUTER JOIN - праве зовнішнє з'єднання, провідна таблиця розташована праворуч від виду з'єднання.
FULL OUTER JOIN – повне зовнішнє з'єднання, за якого у результуюче відношення поміщаються всі кортежі з обох відношень, а для позначення неспівпадаючих значень кортежів в ньому використовуються визначники NULL.
