В PostgreSQL оператор DELETE используется для удаления одной или нескольких записей из таблицы. Если вы хотите удалить выбранные строки из таблицы, PostgreSQL позволяет комбинировать оператор DELETE с предложением WHERE, иначе он удалит все записи.
В этом руководстве по PostgreSQL вы узнаете следующее:
- Синтаксис
- параметры
- С одним условием
- С двумя условиями
- Использование EXISTS Условие
- Использование pgAdmin
Синтаксис
Оператор 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)
- На панели навигации слева нажмите Базы данных.
- Нажмите Демо.
Шаг 3) Введите запрос в редакторе запросов:
DELETE FROM Price WHERE id = 4;
Шаг 4) Нажмите кнопку «Выполнить».
Шаг 5) Давайте проверим, было ли удаление успешным:
С двумя условиями
Чтобы сделать то же самое через pgAdmin, сделайте это:
Шаг 1) Войдите в свою учетную запись pgAdmin.
Шаг 2)
- На панели навигации слева нажмите Базы данных.
- Нажмите Демо.
Шаг 3) Введите запрос в редакторе запросов:
DELETE FROM Price WHERE id = 3 AND price = 300;
Шаг 4) Нажмите кнопку «Выполнить».
Шаг 5) Давайте проверим, было ли удаление успешным:
Использование EXISTS Условие
Чтобы сделать то же самое через pgAdmin, сделайте это:
Шаг 1) Войдите в свою учетную запись pgAdmin.
Шаг 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 может помочь нам удалить записи из таблицы на основе записей другой таблицы.
Загрузите базу данных, использованную в этом руководстве