JavaRush/Курсы/Модуль 4. Работа с БД/Удаление данных в таблице

Удаление данных в таблице

Открыта

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" - Удаление данных

1
Задача
Модуль 4. Работа с БД,  6 уровень,  4 лекция
Недоступна
Удаление по id
Удаление по id
1
Задача
Модуль 4. Работа с БД,  6 уровень,  4 лекция
Недоступна
Удаление по диапазону id
Удаление по диапазону id
1
Задача
Модуль 4. Работа с БД,  6 уровень,  4 лекция
Недоступна
Удаление всех данных
Удаление всех данных
1
Задача
Модуль 4. Работа с БД,  6 уровень,  4 лекция
Недоступна
Удаление всех данных 2
Удаление всех данных 2
1
Задача
Модуль 4. Работа с БД,  6 уровень,  4 лекция
Недоступна
Удаление вьюшки
Удаление вьюшки
Комментарии (2)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Андрей
Уровень 109
27 июня 2024, 05:47
Копирую из своих заметок: Основные отличия DELETE / TRUNCATE: - у DELETE есть WHERE. - блокирует и удаляет построчно / всю таблицу. - каждое удаление строки отображает в логах / в логах только удаление всех записей. - медленно / быстро - TRUNCATE resets Identity columns. - TRUNCATE doesn’t fire Triggers. - После применения TRUNCATE отсутствует возможность восстановить данные до состояния до операции.
Надежда
Уровень 104
Expert
2 сентября 2023, 10:54
Исправьте DROP SCHEME база_данных на DROP SCHEMA база_данных