Учебники

14) PostgreSQL DELETE Row

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

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

Синтаксис

Оператор 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-query : предложение WITH позволяет нам ссылаться на один или несколько подзапросов, на которые ссылается имя в запросе DELETE.
  • table-name : имя таблицы, из которой должны быть удалены записи.
  • псевдоним : это замена имени целевой таблицы.
  • using-list: табличные выражения, позволяющие использовать столбцы из других таблиц в предложении WHERE.
  • условие (я): необязательно. Это условия, которые должны быть выполнены для удаления записей. Если этот раздел не указан, все записи с именами таблиц будут удалены.
  • имя -курсора: курсор, который будет использоваться в состоянии WHERE CURRENT OF. Последняя строка, извлеченная этим курсором, будет удалена.
  • output-expression : выражение, которое будет обработано и возвращено оператором DELETE после удаления каждой строки.
  • output-name : имя, которое будет использоваться для возвращаемого столбца.

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

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

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

Цена

Давайте удалим запись с идентификатором 4:

DELETE FROM Price
WHERE id = 4;

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

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

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

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

Цена:

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

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

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

SELECT * FROM Price

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

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

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

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

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

Книга:

Цена:

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

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

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

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

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

Использование pgAdmin

Теперь посмотрим, как эти действия можно выполнить с помощью pgAdmin.

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

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

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

Шаг 2)

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

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

DELETE FROM Price
WHERE id = 4;

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

Шаг 5) Давайте проверим, было ли удаление успешным:

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

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

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

Шаг 2)

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

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

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

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

Шаг 5) Давайте проверим, было ли удаление успешным:

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

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

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

Шаг 2)

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

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

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

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

Шаг 5) Давайте проверим, было ли удаление успешным:

Резюме:

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

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