PostgreSQL Удалить запрос (удалить строки из выбора)

Удалить запрос в PostgreSQL

Территория Удалить заявление in PostgreSQL используется для удаления одной или нескольких записей из таблицы. Если вы хотите удалить выбранные строки из таблицы PostgreSQL позволяет вам объединить оператор DELETE с предложением WHERE, иначе он удалит все записи.

Синтаксис запроса на удаление Postgres

Оператор DELETE может быть определен с помощью следующего синтаксиса:

[ WITH [ RECURSIVE ] with-query [, ...] ]
DELETE FROM [ ONLY ] table-name [ * ] [ [ AS ] alias ]
    [ USING using-list ]
    [ WHERE condition(s) | WHERE CURRENT OF cursor-name]
    [ RETURNING * | output-expression [ [ AS ] output-name] [, ...] ]

Параметры

  • с запросом: предложение With позволяет нам ссылаться на один или несколько подзапросов, на которые можно ссылаться по имени в запросе DELETE.
  • имя-таблицы: имя таблицы, из которой необходимо удалить записи.
  • псевдоним: это замена имени целевой таблицы.
  • using-list: табличные выражения, позволяющие использовать столбцы из других таблиц в предложении WHERE.
  • условия): необязательный. Это условия, которые должны быть выполнены для удаления записей. Если этот раздел не указан, все записи имен таблиц будут удалены.
  • имя курсора: курсор, который будет использоваться в условии WHERE CURRENT OF. Последняя выбранная этим курсором строка будет удалена.
  • выходное выражение: выражение, которое будет обработано и возвращено оператором DELETE после удаления каждой строки.
  • имя вывода: имя, которое будет использоваться для возвращаемого столбца.

Обратите внимание: поскольку инструкция DELETE удаляет всю строку, вам не нужно указывать имена столбцов.

PostgreSQL Удалить запрос с одним условием

Оператор DELETE можно использовать с одним условием. Условие задается с помощью предложения WHERE. Рассмотрим таблицу цен со следующими данными:

Цена

PostgreSQL Удалить запрос с одним условием

Удалим запись с идентификатором 4:

DELETE FROM Price
WHERE id = 4;

Приведенная выше команда удалит записи с идентификатором 4. Подтвердим, было ли удаление успешным:

PostgreSQL Удалить запрос с одним условием

Строка с идентификатором 4 была удалена.

Удалить запрос с двумя условиями

Территория PostgreSQL Оператор DELETE может принимать два условия. Два условия должны быть объединены с помощью оператора AND. Мы будем использовать следующую таблицу:

Цена:

PostgreSQL Удалить запрос с двумя условиями

Рассмотрим пример, приведенный ниже:

DELETE FROM Price
WHERE id = 3Y
AND price = 300;

В приведенной выше команде мы удаляем строку, в которой идентификатор равен 3, а цена — 300. Теперь мы можем запросить таблицу:

SELECT * FROM Price

Это возвращает следующее:

PostgreSQL Удалить запрос с двумя условиями

Запись с идентификатором 3 и ценой 300 была удалена.

PostgreSQL Удалить запрос с использованием условия существует

С условием EXISTS вы можете усложнить команду DELETE. Иногда может возникнуть необходимость удалить записи в одной таблице на основе записей в другой таблице.

Вы увидите, что предложение FROM не позволяет вам перечислять записи из более чем одной таблицы при выполнении удаления, предложение EXISTS становится очень полезным. У нас есть следующие две таблицы:

Книга:

PostgreSQL Удалить запрос с использованием условия существует

Цена:

PostgreSQL Удалить запрос с использованием условия существует

Затем мы можем запустить следующий запрос:

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

Приведенная выше команда удалит из таблицы Book, если в таблице цен существует запись с идентификатором, совпадающим с идентификатором таблицы Book, и ценой меньше 250.

Таблица Book теперь выглядит следующим образом:

PostgreSQL Удалить запрос с использованием условия существует

Запись с идентификатором 1 была удалена.

Как удалить строку в PostgreSQL используя pgAdmin

Ниже приведены шаги для удаления строки в PostgreSQL используя pgAdmin:

С одним условием

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

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

Откройте pgAdmin и войдите в свою учетную запись, используя свои учетные данные.

Шаг 2) Создайте демонстрационную базу данных

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

Удалить строку в PostgreSQL

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

Введите приведенный ниже запрос в редакторе запросов:

DELETE FROM Price
WHERE id = 4;

Шаг 4) Выполните запрос

Нажмите кнопку «Выполнить»

Удалить строку в PostgreSQL

Шаг 5) Проверьте, удалена ли строка

Проверим, прошло ли удаление успешно:

Удалить строку в PostgreSQL

С двумя условиями

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

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

Шаг 2)

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

Удалить строку в PostgreSQL

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

DELETE FROM Price
WHERE id = 3
AND price = 300;

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

Удалить строку в PostgreSQL

Шаг 5) Проверим, прошло ли удаление успешно:

Удалить строку в PostgreSQL

Использование условия EXISTS

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

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

Шаг 2)

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

Удалить строку, используя условие EXISTS

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

DELETE FROM Book
WHERE EXISTS
  (SELECT 1
    FROM Price
    WHERE Price.id = Book.id
    AND price < 250 );

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

Удалить строку, используя условие EXISTS

Шаг 5) Проверим, прошло ли удаление успешно:

Удалить строку, используя условие EXISTS

Резюме

  • Оператор DELETE используется для удаления одной или нескольких записей из таблицы.
  • Чтобы удалить из таблицы только выбранные строки, вы можете объединить оператор DELETE с предложением WHERE.
  • Если предложение DELETE используется без предложения WHERE, оно удаляет все записи из таблицы.
  • Параметр table-name позволяет добавить имя таблицы, из которой необходимо удалить записи.
  • Мы можем использовать оператор DELETE с одним условием, указанным с помощью предложения WHERE.
  • Оператор DELETE также можно использовать с двумя условиями, указанными в предложении WHERE. Два условия должны быть объединены с помощью оператора AND.
  • Территория СУЩЕСТВУЕТ условие может помочь нам удалить записи из таблицы на основе записей другой таблицы.

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