Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / 6БД.doc
Скачиваний:
52
Добавлен:
30.05.2020
Размер:
1.24 Mб
Скачать

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.

Соседние файлы в папке лекции