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

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

Модуль 4. Работа с БД
6 уровень , 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 лекция
Недоступна
task0615
Удали из таблицы task запись с id равным 5.
1
Задача
Модуль 4. Работа с БД, 6 уровень, 4 лекция
Недоступна
task0616
Удали из таблицы task записи с id в диапазоне от 5 до 10.
1
Задача
Модуль 4. Работа с БД, 6 уровень, 4 лекция
Недоступна
task0617
Удали из таблицы task все записи с помощью delete.
1
Задача
Модуль 4. Работа с БД, 6 уровень, 4 лекция
Недоступна
task0618
Удали из таблицы task все записи с помощью truncate.
1
Задача
Модуль 4. Работа с БД, 6 уровень, 4 лекция
Недоступна
task0619
Удали вьюшку (view) task_view.
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Андрей Уровень 109
27 июня 2024
Копирую из своих заметок: Основные отличия DELETE / TRUNCATE: - у DELETE есть WHERE. - блокирует и удаляет построчно / всю таблицу. - каждое удаление строки отображает в логах / в логах только удаление всех записей. - медленно / быстро - TRUNCATE resets Identity columns. - TRUNCATE doesn’t fire Triggers. - После применения TRUNCATE отсутствует возможность восстановить данные до состояния до операции.
Надежда Уровень 104 Expert
2 сентября 2023
Исправьте DROP SCHEME база_данных на DROP SCHEMA база_данных