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

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

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

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

1
EXISTS Student

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

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.

Категория: MySQL | Добавил: ghost_mod (29.09.2016)
Просмотров: 604 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Подписка:1
Код *: