Здавалка
Главная | Обратная связь

Операція об'єднання



Об'єднання двох таблиць містить ті рядки, що є або в першій, або в другій, або в обох таблицях.

Об'єднання ( UNION ) відношень А та В можна отримати в результаті їх злиття з утворенням одного відношення з виключенням кортежів-дублікатів

Відношення А та В мають бути сумісні за об'єднанням, тобто мати однакову кількість полів із співпадаючими типами даних

Реляційна алгебра: А UNION В

Оператор SQL:

SELECT *

FROM A

UNION

SELECT *

FROM B;

 

Операція взяття різниці

Різниця ( 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…);

Операція перетину

Операція перетину ( 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 …;

 

Декартів добуток таблиць

Декартів добуток А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;

 

Операція з'єднання

З'єднання - це підмножина декартова добутку

З'єднання -це процес, коли дві або більш за таблицю об'єднуються в одну

В SQL для завдання типу з'єднання таблиць в логічному наборі записів, з якого вибиратиметься необхідна інформація, використовується операція JOIN в реченні FROM

Формат операции:

FROMім’я_таблиці_1{INNER | LEFT | RIGHT} JOIN

ім’я_таблиці_2ON умова_з'єднання

Різновиди операторів 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 *

FromT1 inner joinT2onT1.A=T2.C;

Виконання природного з’єднання забезпечує операторINNER JOIN.

Select *

FromT1inner joinT2onT1.A = T2.А;

SelectT1.*, Т2.*

FromT1, T2whereT1.A = T2.А;

Зовнішнє з'єднання(OUTER JOIN)схоже на внутрішнє, але в результуючий набір даних включаються також записи провідної таблиці з'єднання, які об'єднуються з порожньою множиною записів іншої таблиці.

Яка з таблиць буде провідною, визначає вид з'єднання.

LEFT OUTER JOIN - ліве зовнішнє з'єднання, провідною є таблиця, розташована зліва від виду з'єднання.

RIGHT OUTER JOIN- праве зовнішнє з'єднання, провідна таблиця розташована праворуч від виду з'єднання.

FULL OUTER JOIN –повне зовнішнє з'єднання, за якого у результуюче відношення поміщаються всі кортежі з обох відношень, а для позначення неспівпадаючих значень кортежів в ньому використовуються визначники NULL.

Операція ділення

Операція ділення може бути реалізована реченням SELECT з корельованими вкладеними підзапитами з використанням предикату EXISTS.

Реляційна алгебра: A(X,Y) DEVIDE BY B(Y)

Оператор SQL:

SELECT DISTINCTA.X

FROMA

WHERE NOT EXIST

(SELECT*

FROMB

WHERE NOT EXIST

(SELECT *

FROMAasA1

WHEREA1.X = A.X

ANDA1.Y = B.Y));

Такі конструкції необхідні у запитах зі словом “всі”.

Приклад. Вибрати імена та прізвища клієнтів, які купили всі товари (товари всіх назв).

SELECT DISTINCTКлієнт.Прізвище, Клієнт.Ім’я

FROMКлієнт

WHERE NOT EXIST

(SELECT*

FROMТовар

WHERE NOT EXIST

(SELECT*

FROMУгода

WHEREУгода.КодТовару = Товар.КодТовару

ANDУгода.КодКлієнта = Клієнт.КодКлієнта));

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.