Удаление записей из таблиц производится стандартной командой SQL DELETE
. Вызов DELETE
приводит к необратимым последствиям (исключение составляют тщательно спланированные транзакционные блоки), поэтому удаление данных из базы требует крайней осторожности.
Команда удаления одной или нескольких записей из базы имеет следующий синтаксис:
DELETE FROM [ ONLY ] таблица [ WHERE условие ]
DELETE FROM [ ONLY ] таблица
. Ключевое слово ONLY
означает, что обновляется только заданная таблица, но не ее производные таблицы. Применяется лишь в том случае, если таблица использовалась в качестве базовой при наследовании.
WHERE условие
. В секции WHERE
задается критерий, по которому в таблице выбираются удаляемые записи. При отсутствии секции WHERE
из таблицы удаляются все записи.
Секция WHERE
почти всегда присутствует в команде DELETE
. В ней определяются условия отбора удаляемых записей, выраженные в такой же синтаксической форме, как и при использовании команды SELECT
.
Перед выполнением команды DELETE
рекомендуется выполнить команду SELECT
с соответствующей секцией WHERE
и просмотреть удаляемые данные перед их фактическим уничтожением. Пример приведен в листинге 41.
booktown=# SELECT * FROM stock WHERE stock = 0;
isbn | cost | retail | stock
0394800753 | 16.00 | 16.95 | 0
0394900014 | 23.00 | 23.95 | 0
0451198492 | 36.00 | 46.95 | 0
0451457994 | 17.00 | 22.95 | 0
(4 rows)
booktown=# DELETE FROM stock WHERE stock = 0;
DELETE 4
При отсутствии секции WHERE
команда DELETE
удаляет из таблицы все записи.
booktown=# DELETE FROM stock_backup;
DELETE 16
Модификация записей командой UPDATE | Подзапросы |