5.1 Оператор DELETE FROM

Что просто делать в SQL, так это удалять данные. Ты можешь удалить абсолютно все очень быстро, и у тебя даже никто не спросит никаких подтверждений.

Начнем с самого простого сценария: как удалить одну строку в таблице.

Этот сценарий ты будешь встречать чаще всего, обычно это удаление какой-то конкретной записи, и стандартный запрос обычно имеет вид:

DELETE FROM таблица
WHERE id = 133;

Это единственный запрос, где не нужно указывать имена колонок: данные ведь удаляются сразу строками.

Второй сценарий – это удаление строк, которые заданы списком id, тут тоже все довольно просто:

DELETE FROM таблица
WHERE id IN (1, 2, 3,);

Третий сценарий – это удаление строк, которые соответствуют определенному условию:

DELETE FROM таблица
WHERE условие;

Допустим, мы хотим уволить всех наших программистов, тогда нужно написать запрос типа:

DELETE FROM employee
WHERE occupation = 'Программист';

И, наконец, если ты хочешь удалить все записи, то можешь написать такой запрос:

DELETE FROM таблица

Такого простого запроса достаточно, чтобы удалить все записи из таблицы. Кстати, никакого Ctrl+Z при этом не будет. Записи просто удаляются без возможности восстановления и все. Так что делай бэкапы, да почаще.

5.2 Удаляем вообще все

Для быстрого удаления (чтобы добавить юзерам головной боли) у SQL есть еще несколько команд.

Как быстро удалить все данные в таблице? Воспользуйся оператором TRUNCATE:

TRUNCATE TABLE таблица

Одна опечатка в названии таблицы — и пара дней восстановления данных тебе обеспечены. Радуйся, что ты не админ баз данных.

Если тебе нужно удалить не просто данные в таблице, а и саму таблицу, то для этого есть оператор DROP:

DROP TABLE таблица

Кстати, аналогичные варианты есть и со схемами баз данных. Если хочешь удалить саму базу, то:

DROP SCHEMA база_данных

или:

DROP DATABASE база_данных

Также с помощью DROP можно удалять:

  • EVENT
  • FUNCTION
  • PROCEDURE
  • INDEX
  • VIEW
  • TRIGGER

И вот тебе пару интересных историй, связанных с удалением данных:

Провал дня. GitLab удалил 300 ГБ данных клиентов из-за ошибки сисадмина

sudo rm -rf, или Хроника инцидента с базой данных GitLab.com от 2017/01/31

Кремниевая Долина "Silicon Valley" - Удаление данных