Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД SQL(засоби ман_пулювання даними.Нетрив_альн_ запити).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
527.76 Кб
Скачать

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

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

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

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

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

Оператор SQL:

      SELECT *

      FROM A

                  UNION

                  SELECT *

                  FROM B;

 

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

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

 

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

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

 

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

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

 

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

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

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

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

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

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

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

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

From T1 inner join T2  on  T1.A = T2.C;

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

Select *

From T1 inner join T2  on  T1.A = T2.А;

Select T1.*, Т2.*

From T1, T2  where T1.A = T2.А;

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

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

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

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

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