Материал: 6БД

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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.

8 Операція ділення відношень

Результат операції ділення 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.

Контрольні питання

  1. Дайте коротку характеристику операції вибірки.

  2. В чому полягає її призначення?

  3. Наведіть формальний синтаксис операції та поясніть його складові.

  4. Дайте коротку характеристику операції проекції.

  5. В чому полягає її призначення?

  6. Наведіть формальний синтаксис операції та поясніть його складові.

  7. Дайте коротку характеристику операції декартового добутку.

  8. В чому полягає її призначення?

  9. Наведіть формальний синтаксис операції та поясніть його складові.

  10. Як визначити результуючу кількість записів декартового добутку?

  11. Дайте коротку характеристику операції з'єднання.

  12. В чому полягає її призначення?

  13. Наведіть формальний синтаксис операції та поясніть його складові.

  14. Перерахуйте відомі вам різновиди з'єднання та охарактеризуйте кожен з них.

  15. Дайте характеристику та поясніть призначення тета-з'єднання.

  16. Дайте характеристику та поясніть призначення з'єднання по еквівалентності.

  17. Дайте характеристику та поясніть призначення природного з'єднання.

  18. Дайте характеристику та поясніть призначення зовнішнього з'єднання.

  19. Дайте характеристику та поясніть призначення напівз'єднання.

  20. Що таке предикат?

  21. Дайте коротку характеристику операції об'єднання.

  22. В чому полягає її призначення?

  23. Наведіть формальний синтаксис операції та поясніть його складові.

  24. Що буде отримано в результаті виконання операції?

  25. Дайте коротку характеристику операції перетину.

  26. В чому полягає її призначення?

  27. Наведіть формальний синтаксис операції та поясніть його складові.

  28. Що буде отримано в результаті виконання операції?

  29. Дайте коротку характеристику операції різниці.

  30. В чому полягає її призначення?

  31. Наведіть формальний синтаксис операції та поясніть його складові.

  32. Що буде отримано в результаті виконання операції?

  33. Дайте коротку характеристику операції ділення відношень.

  34. В чому полягає її призначення?

  35. Наведіть формальний синтаксис операції та поясніть його складові.

  36. Що буде отримано в результаті виконання операції?

12