Выражение DELETE
Выражение DELETE удаляет строки из таблицы. Условие для выбора удаляемых строк можно задать через выражение WHERE.
В качестве результата запроса возвращается количество удаленных строк.
Вместо удаления или изменения строк в существующих таблицах (выражения DELETE и UPDATE) рекомендуется создавать новые таблицы на основе существующих с применением необходимых фильтров (выражение CREATE TABLE) и при необходимости удалять существующие (выражение TRUNCATE).
|
Синтаксис
DELETE FROM <table_name>
[ WHERE <condition> ]
Параметры
-
[ WHERE <condition> ]Указывает условие, которое будет использоваться для выбора строк для удаления. Если этот параметр опущен, все строки в таблице удаляются, но таблица не удаляется.
Разрешенные операторы внутри условия
<condition>:-
=равно -
>больше -
<меньше -
in (…)входит в список -
их комбинации
-
Примеры
Пример 1
Создадим таблицу с числами от 1 до 100 и удалим из нее все строки без дополнительных условий:
CREATE TABLE demo.numbers (numbers BIGINT);
INSERT INTO demo.numbers (numbers)
SELECT unnest(generate_series(1,100));
DELETE FROM demo.numbers;
+-------+
| count |
+-------+
| 100 |
+-------+
Проверим содержимое таблицы:
SELECT * FROM demo.numbers;
+---------+
| numbers |
+---------+
0 rows
Пример 2
Создадим таблицу с числами от 1 до 100 и удалим из нее строки с числами меньше 51 или больше 55:
CREATE TABLE demo.numbers (numbers BIGINT);
INSERT INTO demo.numbers (numbers)
SELECT unnest(generate_series(1,100));
DELETE FROM demo.numbers
WHERE numbers < 51 OR numbers > 55;
+-------+
| count |
+-------+
| 95 |
+-------+
Проверим содержимое таблицы:
SELECT * FROM demo.numbers
+---------+
| numbers |
+---------+
| 51 |
+---------+
| 52 |
+---------+
| 53 |
+---------+
| 54 |
+---------+
| 55 |
+---------+
Пример 3
Создадим таблицу с числами от 1 до 10 и удалим из нее строки с числами из списка (2,4,6,8,10,12):
CREATE TABLE demo.numbers (numbers BIGINT);
INSERT INTO demo.numbers (numbers)
SELECT unnest(generate_series(1,10));
DELETE FROM demo.numbers
WHERE numbers IN (2,4,6,8,10,12);
+-------+
| count |
+-------+
| 5 |
+-------+
Проверим содержимое таблицы:
SELECT * FROM demo.numbers;
+---------+
| numbers |
+---------+
| 1 |
+---------+
| 3 |
+---------+
| 5 |
+---------+
| 7 |
+---------+
| 9 |
+---------+