SQL Урок 7. Оператор Exists

SQL   1 апреля 2012  Автор статьи:  

В данной статье мы научимся проверять получаемые наборы на пустоту. Оператор EXISTS возвращает значение true(истина), если набор не пуст и false(ложь) в ином случае.Общий синтаксис оператора EXISTS:

EXISTS название_таблицы

Для того, чтобы узнать не пуста ли таблица студентов можно использовать следующий запрос:

EXISTS Student

Для того, чтобы проверить существует ли группа в которой учится студент, и вывести только тех студентов, которые учатся в реальных группах можно применить следующий запрос:

SELECT * FROM STUDENT
WHERE EXISTS (SELECT Student.GroupID, StudentGroup.ID FROM Student, StudentGroup WHERE Student.GroupID = StudentGroup.ID)

Также EXISTS можно использовать для установления значения истинности в условии:

SELECT * FROM Student
WHERE EXISTS (SELECT NULL)

Для того, чтобы найти студентов, которых нет ни в одной группе можно использовать оператор ANY или SOME, которые проверят удовлетворяет ли какому — то условию хотя бы одна запись из набора.

SELECT * FROM Student,
WHERE GroupID=ANY(SELECT ID FROM StudentGroup)

Для того, чтобы проверить условие для всего запроса необходимо использовать ALL:

название_столбца знак_сравнения ALL(запрос)

Давайте выведем такую группу, которая содержит всех студентов, если такая группа существует.

SELECT * FROM StudentGroup,
WHERE ID=ALL(SELECT GroupID FROM Student)

Так для чего же нужны подобные запросы? Можно ли реализовать аналогичные проблемы по другому. Попробуем составить похожий на предыдущий запрос:

SELECT * FROM StudentGroup,
WHERE ID=(SELECT GroupID FROM Student)

Тогда база данных выдаст вам ошибку выполнения и прекратит работу, таким образом мы не можем реализовать аналогичный функционал без ANY и ALL.

Научиться программировать

  • на Delphi

  • на Java

  • на C++