Лівим зовнішнім з'єднанням називається з'єднання, при якому кортежі відношення 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. Вибірка інформації про всі товари.
Операція напівз'єднання визначає відношення, що містить ті кортежі відношення 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.
Об'єднання (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.
Операція перетину (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.
Різниця (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.
Результат операції ділення R:S - набір кортежів відношення R, визначених на безлічі атрибутів S, які відповідають комбінації всіх кортежів відношення S .
T1=ПC( R );
T2=ПC( (S X T1) -R );
T=T1 - T2.
Відношення R визначено на безлічі атрибутів А, а відношення S - на безлічі атрибутів B, причому і C=A - B.
Хай А ={ім'я, стать, зріст, вік, вага}; B ={ім'я, стать, вік}; З ={зріст, вага}.
Таблиця 6.6. Відношення R
ім'я стать зріст вік вага
а ж 160 20 60
b м 180 30 70
з же 150 16 40
Відношення S
ім'я стать вік
а ж 20
T1=ПC(R)
зріст вага
160 60
180 70
150 40
TT=(S X T1) -R
ім'я стать вік зріст вага
а ж 20 180 70
а ж 20 150 40
T2=ПC((S X T1)-R)
зріст вага
180 70
150 40
T=T1-T2
зріст вага
160 60
Приклад 6.16. Розподіл відношень в SQL.
Створення відношення R
CREATE TABLE R
(i int primary key,
ім'я varchar(3),
стать varchar(3),
зріст int,
вік int,
вага int)
Приклад 6.16a. Розподіл відношень в SQL.
Створення відношення S
CREATE TABLE S
(i int primary key
ім'я varchar(3)
стать varchar(3)
вік int)
Приклад 6.16b. Розподіл відношень в SQL.
Створення відношення T1
CREATE VIEW T1
AS
SELECT зріст, вага
FROM R
Приклад 6.16c. Розподіл відношень в SQL.
Створення відношення TT
CREATE VIEW TT AS
SELECT S.ім’я, S.стать, S.вік
T1.зріст, T1.вага
FROM S, T1
Приклад 6.16d. Розподіл відношень в SQL.
Створення відношення T2
CREATE VIEW T2
AS
SELECT TT.зріст, TT.вага
FROM TT
WHERE NOT EXISTS
(SELECT R.зріст, R.вага
FROM R
WHERE TT.ім’я=R.ім’я AND TT.стать=R.стать
AND TT.вік=R.вік
AND TT.зріст=R.зріст
AND TT.вага=R.вага)
Приклад 5.16e. Розподіл відношень в SQL.
Створення відношення T
SELECT T1.зріст, T1.вага
FROM T1
WHERE NOT EXISTS
(SELECT T2.зріст,T2.вага
FROM T2
WHERE T1.зріст=T2.зріст AND T1.вага=T2.вага)
Приклад 6.16f. Розподіл відношень в SQL.
Контрольні питання
Дайте коротку характеристику операції вибірки.
В чому полягає її призначення?
Наведіть формальний синтаксис операції та поясніть його складові.
Дайте коротку характеристику операції проекції.
В чому полягає її призначення?
Наведіть формальний синтаксис операції та поясніть його складові.
Дайте коротку характеристику операції декартового добутку.
В чому полягає її призначення?
Наведіть формальний синтаксис операції та поясніть його складові.
Як визначити результуючу кількість записів декартового добутку?
Дайте коротку характеристику операції з'єднання.
В чому полягає її призначення?
Наведіть формальний синтаксис операції та поясніть його складові.
Перерахуйте відомі вам різновиди з'єднання та охарактеризуйте кожен з них.
Дайте характеристику та поясніть призначення тета-з'єднання.
Дайте характеристику та поясніть призначення з'єднання по еквівалентності.
Дайте характеристику та поясніть призначення природного з'єднання.
Дайте характеристику та поясніть призначення зовнішнього з'єднання.
Дайте характеристику та поясніть призначення напівз'єднання.
Що таке предикат?
Дайте коротку характеристику операції об'єднання.
В чому полягає її призначення?
Наведіть формальний синтаксис операції та поясніть його складові.
Що буде отримано в результаті виконання операції?
Дайте коротку характеристику операції перетину.
В чому полягає її призначення?
Наведіть формальний синтаксис операції та поясніть його складові.
Що буде отримано в результаті виконання операції?
Дайте коротку характеристику операції різниці.
В чому полягає її призначення?
Наведіть формальний синтаксис операції та поясніть його складові.
Що буде отримано в результаті виконання операції?
Дайте коротку характеристику операції ділення відношень.
В чому полягає її призначення?
Наведіть формальний синтаксис операції та поясніть його складові.
Що буде отримано в результаті виконання операції?