Как в SQL удалить данные из таблицы: запрос SQL DELETE FROM WHERE
Обучение SQL с примерами: как написать SQL команды, чтобы удалить строку из таблицы базы данных?
Объясняю удаление строк SQL, как удалить запись SQL, простыми словами без воды. Запрос DELETE FROM WHERE это легко! Подойдёт для MySQL, PostgresQL, MS SQL, SQLite, Oracle, MariaDB и др. SQL СУБД.
Использование SQL команды DELETE в SQL: как удалить данные из таблицы базы данных?
Синтаксис команды SQL DELETE FROM WHERE:
DELETE FROM названиеТаблицы WHERE условие;
Этот SQL-запрос буквально означает «УДАЛИТЬ ИЗ таблицы, ЗАПИСИ СООТВЕТСТВУЮЩИЕ условию».
Если вы не укажете условие, вся таблица будет очищена!
Как удалить запись в SQL по ID?
Предположим, у нас есть таблица пользователей, названная users, и мы хотим удалить пользователя с id 10. Почему id? Это уникальный номер каждой строки в таблице.
В одной таблице не может быть несколько одинаковых id, благодаря чему зная id записи, мы гарантированно можем получить именно эту запись.
Пример SQL запроса DELETE FROM WHERE ID будет выглядеть следующим образом:
DELETE FROM users WHERE id = 10;
Важно отметить, что если id — числовой тип данных, мы указываем его без кавычек, тогда как для строковых значений или UUID потребуется их заключить в одинарные кавычки.
При использовании команды DELETE следует проявлять предельную осторожность: удаляемые данные нельзя восстановить простым методом (если не предусмотрены механизмы резервного копирования). Поэтому еще до выполнения запроса рекомендуется внимательно проверить его.
Как удалить несколько строк в SQL? Массовое удаление SQL DELETE c условием
Например мы хотим удалить всех пользователей, которые не входили в систему более года. Благодаря богатым возможностям синтаксиса SQL, мы можем проверить дату последнего входа при помощи SQL DATE_SUB. Пример запроса:
DELETE FROM
users
WHERE
last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR);
В этом примере используем функцию SQL DATE_SUB для вычисления даты, которая была ровно год назад от текущего момента, который мы получаем с помощью SQL функции NOW().
Пример нескольких условий в SQL DELETE FROM WHERE
Синтаксис SQL позволяет задавать несколько условий для более точного выбора записей подлежащих удалению. Пример SQL-запроса на удаление пользователей, которые не заходили на сайт более года и у которых статус "неактивный":
DELETE FROM
users
WHERE
last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR)
AND
status = 'неактивный';
Использование транзакций при удалении данных в SQL
Транзакции SQL позволяют отменить все изменения, внесенные после выполнения команды DELETE, если что-то пошло не так. Синтаксис выглядит следующим образом:
Используем команду BEGIN, чтобы начать транзакцию:
BEGIN;
Выполняем одну или несколько операций, например:
DELETE FROM
users
WHERE
last_login < DATE_SUB(NOW(), INTERVAL 1 YEAR)
AND
status = 'неактивный';
Если команды выполнены успешно, они не возвращают ошибок, и тогда можно двигаться дальше.
Если все операции были выполнены успешно и вы удовлетворены результатом, следует завершить SQL транзакцию используя команду SQL COMMIT, чтобы зафиксировать все изменения:
COMMIT;
Если же возникнет необходимость отменить изменения, мы используем команду SQL ROLLBACK:
ROLLBACK;
В транзакциях SQL команда ROLLBACK используется в случае, если произошла ошибка, или если вы просто не удовлетворены результатами операций внутри транзакции и хотите вернуть базу данных к состоянию на момент до начала транзакции.
Будьте аккуратны при использовании команды DELETE, внимательно проверяйте SQL запросы, чтобы не удалить то, что не должно быть удалено. Используйте конструкции SQL транзакций, или делайте SQL-дампы перед операциями DELETE, при работе с важными данными.