SQL стейтмент EXISTS

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

SQL стейтмент EXISTS (существует) производит проверку на пустоту и возвращает значение булевого типа (true или false) в числовом представлении (1 или 0).

EXISTS — именно оператор/стейтмент языка структурированных запросов к БД SQL, а не функция.

Этому оператору при вызове в качестве аргумента передаётся SQL подзапрос и от его результата будет зависеть, что именно вернёт сам EXISTS. Если вложенный в EXISTS запрос будет хоть что-то возвращать, то оператор вернёт true (точнее 1), если же ничего возвращено не будет (ноль строк), то EXISTS вернёт false (0). Поскольку данный оператор возвращает тип boolean, то его естественно можно использовать с булевыми операторами AND, OR, и NOT.

Возвращаемое значение

Верное или неверное булево значение.

Поскольку в большинстве СУБД булев тип представлен урезанным до двух значений целочисленным, то этих СУБД этот стейтмент возвращает тип integer, это значения либо 1, либо 0.

Примеры

Этот раздел также можно назвать, или альтернативные заголовки раздела:
  • Примеры использования EXISTS

Максимально оптимизированная простая проверка наличия указанных данных в БД:

SELECT EXISTS (SELECT id FROM itm WHERE id = 125 LIMIT 1) AS 'r';

SELECT `cnum`, `cname`, `city` FROM `customers` WHERE EXISTS (SELECT * FROM `customers` WHERE `city` = 'San Jose');

Внутренний запрос выбирает все данные для всех заказчиков в «San Jose». Оператор EXISTS во внешнем предикате отмечает, что некоторый вывод был произведен подзапросом, и поскольку выражение EXISTS было полным предикатом, делает предикат верным. Подзапрос (не соотнесенный) был выполнен только один раз для всего внешнего запроса, и следовательно имеет одно значение во всех случаях. Поэтому EXISTS, когда используется этим способом, делает предикат верным или неверным для всех строк сразу, что это не так уж полезно для извлечения определенной информации.


SELECT EXISTS (SELECT * FROM customers WHERE city = 'Bristol');

Запрос вернёт true, если в таблице customers есть строка, ячейка city которой равна «Bristol», в противном случае вернётся false.

См. также

Эта статья относится к языку SQL.