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

Використання операцій EXISTS (EXIST) та NOT EXISTS



Ключові слова EXISTS та NOT EXISTS призначені для використання лише спільно із підзапитами. Результатом їх обробки є логічне значення TRUE або FALSE. Для ключового слова EXISTS результат дорівнює TRUE у тому і лише в тому випадку, якщо в повертаній підзапитом результуючій таблиці присутній хоч би один рядок. Якщо результуюча таблиця підзапиту порожня, результатом обробки операції EXISTS буде значення FALSE. Для ключового слова NOT EXISTS використовуються правила обробки, зворотні стосовно ключевого слова EXISTS. Оскільки по ключових словах EXISTS та NOT EXISTSперевіряється лише наявність рядків в результуючій таблиці підзапиту, то ця таблиця може містити довільну кількість стовпців.

Підзапити з фразами EXISTS та NOT EXISTS застосовують зовнішні посилання, тобто звертаються до таблиць, які відсутні у основному запиті.

Підзапити з зовнішніми посиланнями називаються корельованими.

Приклад. Визначити перелік товарів, які є на складі.

SELECT Товар.Назва

FROM Товар

WHERE EXISTS

(SELECTСклад.КодТовару

FROM Склад

WHERE Товар.КодТовару=Склад.КодТовару);

Зовнішнє посилання може приймати різні значення для кожної рядка-кандидата, оцінюваного за допомогою підзапиту, тому підзапит повинен виконуватися заново для кожного рядка, що відбирається в основному запиті. Результат виконання запиту еквівалентний результату послідовності дій:

- просканувати таблицю Товар, щоразу виконуючи підзапит з новим значенням назви товару, узятим з таблиці Товар.

- у результат включити тільки ті рядки з таблиці Товар, для яких вкладений підзапит повернув непорожню множину рядків.

Приклад. Вивести дані студентів, які всі предмети здали на “відмінно”.

SELECT Студент.Ст_Н_Зал, Студент.Ст_Прізв, Студент.Ст_Ім’я

FROM Студент

WHERE NOT EXIST

(SELECT *

FROM Оцінка

WHERE Оцінка.Пред_Оц <88

AND

Оцінка.Ст_Н_Зал = Студент.Ст_Н_Зал);

Фактично підзапити з фразою NOT EXISTS застосовують для реалізації операції ділення.

Реалізація операцій реляційної алгебри засобами SQL

Операція вибірки

Операція вибірки - побудова горизонтальної підмножини, тобто підмножини кортежів, що мають задані властивості.

Операція вибірки працює з одним відношенням А і визначає результуюче відношення, яке містить тільки ті кортежі (рядки) відношення А, які задовольняють заданій умові с (предикату).

Реляційна алгебра: A where C

Оператор SQL:

SELECT *

FROM A

WHERE c;

SELECT *

FROM Товар

WHERЕ Товар.Сорт = ‘Перший'

AND Товар.Залишок > 200;

Операція проекції

Операція проекції - побудова вертикальної підмножини відношення, тобто підмножини кортежів, що отримується вибором одних і виключенням інших атрибутів.

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

Операція проекції працює з одним відношенням А і визначає нове відношення, яке містить вертикальну підмножину відношення А, створюване за допомогою витягання значень вказаних атрибутів і вилучення з результату рядків-дублікатів.

Реляційна алгебра: А[X,Y, …, Z]

Оператор SQL:

SELECT DISTINCT A.X, A.Y, …, A.Z

FROM A;

 







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