Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL_mova_strukturovanikh_zapitiv.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
933 Кб
Скачать
☆

4.2.12. Запити, в яких реалізується квантор загальності

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

Запит 4.36

Визначити викладачів, що читають лекції в усіх групах.

Цей запит можна сформулювати так: «Визначити викладачів, для яких не існує таких груп, де вони не читають лекції». Перша частина запиту «Визначити викладачів, для яких не існує таких груп, де...» реалізується в такий спосіб:

SELECT t.Прізвище FROM ВИКЛАДАЧ t

WHERE NOT EXISTS (SELECT *

FROM ГРУПА g

WHERE...)

Тепер слід записати вираз, який містить умову щодо групи. Для цього сфор­мулюємо допоміжний запит: «Визначити групи, де не веде занять викладач з ко­дом X». Він подібний до вихідного запиту (за винятком того, що у даному запиті зазначається конкретний викладач):

SELECT *

FROM ГРУПА g

WHERE #G NOT IN (SELECT #G

FROM ЛЕКЦІЯ 1

WHERE 1,#T = "X")

Об'єднаємо обидва запити, вклавши другий запит у перший у такий спосіб: + фраза WHERE другого запиту замінює фразу WHERE вкладеного підзапиту першо­го запиту; ♦ у фразі WHERE другого запиту замість коду конкретного викладача (X) викорис­товується код викладача з першого запиту (t.#T).

У результаті одержимо:

SELECT t.Прізвище FROM ВИКЛАДАЧ t

WHERE NOT EXISTS (SELECT * FROM ГРУПА g

WHERE #G NOT IN (SELECT #G

FROM ЛЕКЦІЯ 1

WHERE l.#T=t.#T))

4.2.13, Використання невизначених значень

Якщо під час введення даних не внести значення до поля таблиці, то СКБД роз­містить там NULL-значення, або невизначене значення. Аналогічне значення може бути введене до поля таблиці під час виконання операції заміни даних. Мова SQL надає можливість маніпулювати невизначеними значеннями. При цьому NULL-значення не вважається рівним іншому null-значенню, тобто NULL = NULL не дорів­нює TRUE (дорівнює логічному NULL), і N0TCNULL = NULL) також дорівнює логічному NULL. Незважаючи на це, два невизначені значення розглядаються як дублікати, коли необхідно видалити дублікати, і оператор SELECT DISTINCT дасть у результаті не більше одного NULL-значення. Для запису умов з невизначеними значеннями в SQL введені предикати IS та IS NOT, які можна використовувати з константою NULL. Наприклад, якщо потрібно підрахувати середню величину фонду кафедри за умови, що фонд задано, запит буде таким:

SELECT АУЄ(Фонд)

FROM КАФЕДРА

WHERE Фонд IS NOT NULL

Коли необхідно визначити кафедри, для яких не вказано величину фонду, потрібно записати:

SELECT Назва FROM КАФЕДРА

WHERE Фонд IS NULL

4.3. Засоби маніпулювання даними

Ми розглядали, в який спосіб дані вибираються з БД. Далі ми обговоримо, як да­ні можна вводити до БД, редагувати та видаляти. Мова йтиме про оператори SQL, що дають змогу маніпулювати даними: INSERT, UPDATE і DELETE.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]