Учебники

13) PostgreSQL СУЩЕСТВУЕТ

Что такое PostgreSQL существует?

Оператор EXISTS проверяет, существует ли строка (и) в подзапросе. Это означает, что оператор используется вместе с подзапросом. Оператор Exists считается выполненным, когда в подзапросе найдена хотя бы одна строка. Вы можете использовать эту операцию вместе с инструкциями SELECT, UPDATE, INSERT и DELETE.

В этом руководстве по PostgreSQL вы узнаете следующее:

Синтаксис

Вот синтаксис для оператора 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)

  1. На панели навигации слева нажмите Базы данных.
  2. Нажмите Демо.

Шаг 3) Введите запрос в редакторе запросов:

SELECT *
FROM Book
WHERE EXISTS (SELECT *
              FROM Price
              WHERE Book.id = Price.id);

Шаг 4) Нажмите кнопку «Выполнить».

Он должен вернуть следующее:

С заявлением INSERT

Чтобы сделать то же самое через pgAdmin, сделайте это:

Шаг 1) Войдите в свою учетную запись pgAdmin.

Шаг 2)

  1. На панели навигации слева нажмите Базы данных.
  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)

  1. На панели навигации слева нажмите Базы данных.
  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)

  1. На панели навигации слева нажмите Базы данных.
  2. Нажмите Демо.

Шаг 3) Введите запрос в редакторе запросов:

DELETE FROM Price
WHERE EXISTS (SELECT *
              FROM Price2
              WHERE Price.id = Price2.id);

Шаг 4) Нажмите кнопку «Выполнить».

Таблица цен теперь должна быть следующей:

Резюме

  • Оператор EXISTS проверяет, существует ли строка (и) в подзапросе.
  • Он используется с подзапросом и считается выполненным, когда подзапрос возвращает хотя бы одну строку.
  • Он используется вместе с инструкциями SELECT, UPDATE, INSERT и DELETE.

Загрузите базу данных, использованную в этом руководстве