В этом учебном пособии вы узнаете, как использовать PostgreSQL оператор DELETE с синтаксисом и примерами.
Описание
Оператор PostgreSQL DELETE используется для удаления одной или нескольких записей из таблицы в PostgreSQL.
Синтаксис
Синтаксис оператора DELETE в PostgreSQL:
[WHERE conditions];
Параметры или аргументы
- table
- Таблица, из которой вы хотите удалить записи.
- WHERE conditions
- Необязательный. Условия, которые должны быть выполнены для удаления записей. Если никаких условий не предоставлено, все записи из таблицы будут удалены.
Примечание
- Вам не нужно перечислять поля в PostgreSQL операторе DELETE, поскольку вы удаляете всю строку из таблицы.
Пример - с одним условием
Рассмотрим простой пример, где у нас есть только одно условие в операторе DELETE.
Например:
1 2 |
DELETE FROM contacts WHERE first_name = 'Frosya'; |
Этот пример PostgreSQL DELETE удалит все записи из таблицы contacts, где first_name равно 'Frosya'.
Вы можете определить количество строк, которые будут удалены, выполнив следующий оператор SELECT перед выполнением удаления.
1 2 3 |
SELECT count(*) FROM contacts WHERE first_name = 'Frosya'; |
Пример - с двумя условиями
Рассмотрим пример, где у нас есть только два условия в операторе DELETE.
Например:
1 2 3 |
DELETE FROM contacts WHERE first_name = 'Bony' AND contact_id >= 400; |
Этот PostgreSQL пример DELETE удалит все записи из таблицы contacts, где first_name имеет значение «Bony», а customer_id больше или равно 400 .
Вы можете определить количество строк, которые будут удалены, выполнив следующий оператор SELECT перед выполнением удаления.
1 2 3 4 |
SELECT count(*) FROM contacts WHERE first_name = 'Bony' AND contact_id >= 400; |
Пример - использование условия EXISTS
Вы также можете выполнять более сложные удаления.
Вы можете удалить записи в одной таблице на основе значений в другой таблице. Поскольку при выполнении удаления вы не можете перечислить более одной таблицы в PostgreSQL операторе FROM, вы можете использовать предложение EXISTS .
Например:
1 2 3 4 5 6 |
DELETE FROM suppliers WHERE EXISTS ( SELECT 1 FROM customers WHERE customers.customer_id = suppliers.supplier_id AND customer_id < 1000 ); |
Этот пример удалит все записи в таблице suppliers, в которой есть запись в таблице customers, customer_id которой меньше 1000, и customer_id соответствует supplier_id.
Вы можете определить количество строк, которые будут удалены, вызвав функцию postgresql_info или выполнив следующий оператор SELECT перед выполнением удаления.
1 2 3 4 5 6 |
SELECT COUNT(*) FROM suppliers WHERE EXISTS ( SELECT 1 FROM customers WHERE customers.customer_id = suppliers.supplier_id AND customer_id < 1000 ); |