- •1 Операція вибірки
- •2 Операція проекції
- •3 Декартовий добуток
- •4 Операція з'єднання по двох відношеннях (таблицям)
- •4.1 Операція тета-з'єднання
- •4.2 Природне з'єднання
- •4.3 Ліве зовнішнє з'єднання
- •4.4 Напівз'єднання
- •5 Операція об'єднання
- •6 Операція перетину
- •7 Операція різниці
- •8 Операція ділення відношень
4.3 Ліве зовнішнє з'єднання
Лівим зовнішнім з'єднанням називається з'єднання, при якому кортежі відношення R, що не мають співпадаючих значень в загальних стовпцях відношення S, також включаються в результуюче відношення.
Таблиця 6.4.
![]()
R.a1 R.a2 S.b1 S.b2
а 1 1 h
а 2 2 g
b 1 1 h
b 3 3 h
b 4 null null
SELECT R.a1, R.a2, S.b1, S.b2
FROM R LEFT JOIN S ON R.a2=S.b1
Приклад 6.9. Ліве зовнішнє з'єднання відношень в SQL.
Існує і праве зовнішнє з'єднання, зване так тому, що в результуючому відношенні містяться всі кортежі правого відношення. Крім того, є і повне зовнішнє з'єднання, в його результуюче відношення поміщаються всі кортежі з обох відношень, а для позначення неспівпадаючих значень кортежів в ньому використовуються визначники NULL.
SELECT R.a1, R.a2, S.b1, S.b2
FROM R RIGHT JOIN S ON
Приклад 6.10. Праве зовнішнє з'єднання відношень в SQL.
Приклад 6.11. Вивагати інформацію про всі товари. Для проданих товарів буде вказана дата операції і кількість. Для непроданих ці поля залишаться порожніми.
SELECT Товар.*, Операція.*
FROM Товар LEFT JOIN Операція
ON Товар.КодТовара=Сделка.КодТовара;
Приклад 6.11. Вибірка інформації про всі товари.
4.4 Напівз'єднання
Операція напівз'єднання визначає відношення, що містить ті кортежі відношення R, які входять в з'єднання відношень R і S .
Таблиця 6.5.
![]()
R.a1 R.a2
а 1
а 2
b 3
b 1
SELECT R.a1, R.a2
FROM R, S
WHERE R.a2=S.b1
або
SELECT R.a1, R.a2
FROM R INNER JOIN S ON R.a2=S.b1
Приклад 6.12. напівз'єднання відношень в SQL.
5 Операція об'єднання
Об'єднання (UNION)
відношень R і S можна одержати в результаті
їх конкатенації з утворенням одного
відношення з виключенням кортежів-дублікатів.
При цьому відношення R і S повинні бути
сумісні, тобто мати однакову кількість
полів із співпадаючими типами даних.
Інакше кажучи, відношення повинні бути
сумісні по об'єднанню.
Об'єднанням двох таблиць R і S є таблиця, що містить всі рядки, які є в першій таблиці R, в другій таблиці S або в обох таблицях відразу.
SELECT R.a1, R.a2
FROM R
UNION
SELECT S.b2, S.b1
FROM S
Приклад 6.13. Об'єднання відношень в SQL.
6 Операція перетину
Операція перетину (INTERSECT)
визначає відношення, яке містить кортежі,
присутні як відносно R, так і відносно
S. Відношення R і S повинні бути сумісні
по об'єднанню .
Перетином двох таблиць R і S є таблиця, що містить всі рядки, присутні в обох початкових таблицях одночасно.
SELECT R.a1, R.a2
FROM R,S
WHERE R.a1=S.b1 AND R.a2=S.b2
або
SELECT R.a1, R.a2
FROM R
WHERE R.a1 IN
(SELECT S.b1 FROM S
WHERE S.b1=R.a1) AND R.a2 IN
(SELECT S.b2
FROM S
WHERE S.b2=R.a2)
Приклад 6.14. Перетин відношень в SQL.
7 Операція різниці
Різниця (EXCEPT) R-S двох відношень R і S складається з кортежів, які є відносно R, але відсутні відносно S. Причому відношення R і S повинні бути сумісні по об'єднанню.
Різницею двох таблиць R і S є таблиця, що містить всі рядки, які присутні в таблиці R, але відсутні в таблиці S.
SELECT R.a1, R.a2
FROM R
WHERE NOT EXISTS
(SELECT S.b1,S.b2
FROM S
WHERE S.b1=R.a2 AND S.b2=R.a1)
Приклад 6.15. Різниця відношень в SQL.
