Что такое PostgreSQL существует?
Оператор EXISTS проверяет, существует ли строка (и) в подзапросе. Это означает, что оператор используется вместе с подзапросом. Оператор Exists считается выполненным, когда в подзапросе найдена хотя бы одна строка. Вы можете использовать эту операцию вместе с инструкциями SELECT, UPDATE, INSERT и DELETE.
В этом руководстве по PostgreSQL вы узнаете следующее:
- Синтаксис
- С оператором SELECT
- С заявлением INSERT
- С ОБНОВЛЕНИЕМ Заявление
- С УДАЛЕННЫМ Заявлением
- С помощью pgAdmin
Синтаксис
Вот синтаксис для оператора PostgreSQL EXISTS:
WHERE EXISTS (subquery);
Приведенный выше синтаксис показывает, что оператор EXISTS принимает аргумент, который является подзапросом. Подзапрос — это просто оператор SELECT, который должен начинаться с SELECT * вместо списка имен столбцов или выражений.
С оператором SELECT
Давайте посмотрим, как использовать оператор SELECT с оператором EXISTS. У нас есть следующие таблицы:
Книга:
Цена:
Запустите следующее утверждение:
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Это возвращает следующее:
Приведенная выше команда должна вернуть все записи в таблице Book, чей идентификатор совпадает с идентификатором любых записей подзапроса. Только один идентификатор был сопоставлен. Следовательно, была возвращена только одна запись.
С заявлением INSERT
Мы можем использовать оператор EXISTS в операторе INSERT. У нас есть следующие 3 таблицы:
Книга:
Цена:
price2:
Затем мы можем выполнить следующее утверждение:
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Таблица цен теперь выглядит следующим образом:
Строка с идентификатором 5 в таблице с именем Price2 была сопоставлена. Эта запись была затем вставлена в таблицу цен.
С ОБНОВЛЕНИЕМ Заявление
Мы можем использовать оператор EXISTS в операторе UPDATE.
Запустите следующий запрос:
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
Мы обновляем столбец цен таблицы Price. Наша цель — сделать так, чтобы цены на товары с одинаковым идентификатором были одинаковыми. Совпал только один ряд, то есть 5.
Однако, поскольку цены равны, то есть 205, обновление не было сделано. Если бы была разница, обновление было бы сделано.
С УДАЛЕННЫМ Заявлением
Оператор DELETE PostgreSQL может использовать оператор EXISTS. Вот пример:
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Таблица цен теперь выглядит следующим образом:
Строка с идентификатором 5 была удалена.
С помощью pgAdmin
Теперь посмотрим, как эти действия можно выполнить с помощью pgAdmin.
С оператором SELECT
Чтобы сделать то же самое через pgAdmin, сделайте это:
Шаг 1) Войдите в свою учетную запись pgAdmin.
Шаг 2)
- На панели навигации слева нажмите Базы данных.
- Нажмите Демо.
Шаг 3) Введите запрос в редакторе запросов:
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Шаг 4) Нажмите кнопку «Выполнить».
Он должен вернуть следующее:
С заявлением INSERT
Чтобы сделать то же самое через pgAdmin, сделайте это:
Шаг 1) Войдите в свою учетную запись pgAdmin.
Шаг 2)
- На панели навигации слева нажмите Базы данных.
- Нажмите Демо.
Шаг 3) Введите запрос в редакторе запросов:
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Шаг 4) Нажмите кнопку «Выполнить».
Таблица цен теперь должна быть следующей:
С ОБНОВЛЕНИЕМ Заявление
Чтобы сделать то же самое через pgAdmin, сделайте это:
Шаг 1) Войдите в свою учетную запись pgAdmin.
Шаг 2)
- На панели навигации слева нажмите Базы данных.
- Нажмите Демо.
Шаг 3) Введите запрос в редакторе запросов:
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
Шаг 4) Нажмите кнопку «Выполнить».
Таблица цен теперь должна быть следующей:
С УДАЛЕННЫМ Заявлением
Чтобы сделать то же самое через pgAdmin, сделайте это:
Шаг 1) Войдите в свою учетную запись pgAdmin.
Шаг 2)
- На панели навигации слева нажмите Базы данных.
- Нажмите Демо.
Шаг 3) Введите запрос в редакторе запросов:
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Шаг 4) Нажмите кнопку «Выполнить».
Таблица цен теперь должна быть следующей:
Резюме
- Оператор EXISTS проверяет, существует ли строка (и) в подзапросе.
- Он используется с подзапросом и считается выполненным, когда подзапрос возвращает хотя бы одну строку.
- Он используется вместе с инструкциями SELECT, UPDATE, INSERT и DELETE.
Загрузите базу данных, использованную в этом руководстве