В данной статье мы научимся проверять получаемые наборы на пустоту. Оператор EXISTS возвращает значение true(истина), если набор не пуст и false(ложь) в ином случае.Общий синтаксис оператора EXISTS:
1
|
EXISTS название_таблицы
|
Для того, чтобы узнать не пуста ли таблица студентов можно использовать следующий запрос:
Для того, чтобы проверить существует ли группа в которой учится студент, и вывести только тех студентов, которые учатся в реальных группах можно применить следующий запрос:
1
2
|
SELECT * FROM STUDENT
WHERE EXISTS (SELECT Student.GroupID, StudentGroup.ID FROM Student, StudentGroup WHERE Student.GroupID = StudentGroup.ID)
|
Также EXISTS можно использовать для установления значения истинности в условии:
1
2
|
SELECT * FROM Student
WHERE EXISTS (SELECT NULL)
|
Для того, чтобы найти студентов, которых нет ни в одной группе можно использовать оператор ANY или SOME, которые проверят удовлетворяет ли какому — то условию хотя бы одна запись из набора.
1
2
|
SELECT * FROM Student,
WHERE GroupID=ANY(SELECT ID FROM StudentGroup)
|
Для того, чтобы проверить условие для всего запроса необходимо использовать ALL:
1
|
название_столбца знак_сравнения ALL(запрос)
|
Давайте выведем такую группу, которая содержит всех студентов, если такая группа существует.
1
2
|
SELECT * FROM StudentGroup,
WHERE ID=ALL(SELECT GroupID FROM Student)
|
Так для чего же нужны подобные запросы? Можно ли реализовать аналогичные проблемы по другому. Попробуем составить похожий на предыдущий запрос:
1
2
|
SELECT * FROM StudentGroup,
WHERE ID=(SELECT GroupID FROM Student)
|
Тогда база данных выдаст вам ошибку выполнения и прекратит работу, таким образом мы не можем реализовать аналогичный функционал без ANY и ALL.
|