MySQL Запрос DELETE: как удалить строку из таблицы
⚡ Умное резюме
MySQL Запрос DELETE удаляет из таблицы строки, которые больше не нужны, и возвращает количество затронутых строк. В этом ресурсе объясняется синтаксис DELETE, фильтрация WHERE, удаление нескольких строк с помощью IN, а также более безопасные альтернативы TRUNCATE и DROP.

Что такое запрос DELETE?
MySQL УДАЛИТЬ Оператор DELETE используется для удаления строк, которые больше не нужны, из таблицы базы данных. Он удаляет всю строку из таблицы и возвращает количество удаленных строк. Оператор DELETE полезен, когда необходимо очистить временные или устаревшие данные из базы данных.
Запрос DELETE в MySQL Позволяет удалить более одной строки из таблицы за одно выполнение. Это особенно полезно при удалении большого количества строк из таблицы базы данных.
После удаления строки ее невозможно восстановить. Всегда создавайте резервную копию базы данных перед удалением данных, чтобы при необходимости базу данных можно было восстановить и просмотреть позже.
Как удалить строку в MySQL
После того, как цель утверждения стала ясна, следующим шагом является синтаксис. Чтобы удалить строку в MySQLиспользуется оператор DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
ЗДЕСЬ:
- Удалить из `table_name` сообщает MySQL Сервер должен удалить строки из указанной таблицы.
- [ГДЕ условие] Этот параметр является необязательным и используется для применения фильтра, ограничивающего количество строк, затрагиваемых запросом DELETE.
Если же линия индикатора Предложение WHERE не используется в MySQL Удалить запрос, затем ВСЕ Строки в данной таблице будут удалены.
⚠️ Предупреждение: Сначала выполните фильтр как оператор SELECT. Если он возвращает именно те строки, которые вы хотите удалить, то соответствующий оператор DELETE будет безопасным. Полный синтаксис описан в документации. MySQL Оператор DELETE (ручное управление).
Пример MySQL Удалить запрос
В следующем разделе создается небольшой набор данных, а затем из него удаляются данные.
Шаг 1: Вставьте пример данных
Прежде чем перейти к более подробному обсуждению оператора SQL DELETE, давайте добавим несколько примеров данных в таблицу movies для работы.
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Charlie Chaplin', 1940, 7); INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8); INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);
Выполнение приведенного выше скрипта добавляет три (3) фильма в таблицу фильмов. Прежде чем продолжить, давайте перечислим все фильмы в нашей таблице.
SELECT * FROM `movies`;
Выполнение приведенного выше скрипта дает следующие результаты. Три вновь вставленные строки выделены.
| Movie_id | название | директор | год_выпущено | ид_категории |
|---|---|---|---|---|
| 1 | Пираты Карибского моря 4 | Роб Маршалл | 2011 | 1 |
| 2 | Забыть Сару Маршал | Николас Столлер | 2008 | 2 |
| 3 | X-Men | NULL, | 2008 | NULL, |
| 4 | Code Имя Черный | Эдгар Джимз | 2010 | NULL, |
| 5 | Папины маленькие девочки | NULL, | 2007 | 8 |
| 6 | Ангелы и демоны | NULL, | 2007 | 6 |
| 7 | Да Винчи Code | NULL, | 2007 | 6 |
| 9 | Honey moonERS | Джон Шульц | 2005 | 8 |
| 16 | 67% Виновен | NULL, | 2012 | NULL, |
| 18 | Великий диктатор | Чарли Чаплин | 1940 | 7 |
| 19 | пример фильма | Anonymous | NULL, | 8 |
| 20 | фильм 3 | Джон Браун | 1920 | 8 |
Шаг 2: Удаление одной строки
Предположим, видеотека Myflix больше не хочет сдавать в аренду фильм «Великий диктатор» и желает удалить его из базы данных. Идентификатор фильма — 18, поэтому приведенный ниже скрипт удаляет эту строку.
DELETE FROM `movies` WHERE `movie_id` = 18;
Выполнение приведенного выше сценария в MySQL Верстак При обращении к базе данных Myflix фильм с идентификатором 18 удаляется из таблицы.
Давайте теперь проверим текущее состояние таблицы фильмов.
SELECT * FROM `movies`;
| Movie_id | название | директор | год_выпущено | ид_категории |
|---|---|---|---|---|
| 1 | Пираты Карибского моря 4 | Роб Маршалл | 2011 | 1 |
| 2 | Забыть Сару Маршал | Николас Столлер | 2008 | 2 |
| 3 | X-Men | NULL, | 2008 | NULL, |
| 4 | Code Имя Черный | Эдгар Джимз | 2010 | NULL, |
| 5 | Папины маленькие девочки | NULL, | 2007 | 8 |
| 6 | Ангелы и демоны | NULL, | 2007 | 6 |
| 7 | Да Винчи Code | NULL, | 2007 | 6 |
| 9 | Honey moonERS | Джон Шульц | 2005 | 8 |
| 16 | 67% Виновен | NULL, | 2012 | NULL, |
| 19 | пример фильма | Anonymous | NULL, | 8 |
| 20 | фильм 3 | Джон Браун | 1920 | 8 |
ПРИМЕЧАНИЕ:
- Фильм с идентификатором 18 больше не отображается в результатах запроса.
- С помощью оператора DELETE нельзя удалить отдельный столбец из таблицы. Оператор удаляет всю строку целиком. Чтобы очистить одно поле, используйте оператор DELETE. ОБНОВИТЬ запрос Это устанавливает значение столбца равным NULL.
Шаг 3: Удаление нескольких строк с оператором IN
Допустим, у нас есть список фильмов, которые мы хотим удалить. Вместо того чтобы выполнять отдельное выражение для каждой строки, мы можем объединить условие WHERE с оператором IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Выполнение приведенного выше скрипта удаляет фильмы с идентификаторами 20 и 21 из нашей таблицы фильмов за один проход.
Удалить, обрезать, перетащить MySQL
Удаление — не единственный способ удалить данные из MySQLНовички часто выбирают этот способ, когда более быстрая команда подошла бы лучше, поэтому в таблице ниже приведено сравнение трех команд удаления.
| Характеристика | УДАЛИТЬ | ОБРЕЗАТЬ | DROP |
|---|---|---|---|
| Тип команды | DML | DDL | DDL |
| Предложение WHERE | Поддержанный | Не поддерживается | Не поддерживается |
| Что удаляется | Выбранные строки | Все строки | Структура строк и таблиц |
| Отмена | Возможно внутри транзакции | Невозможно (неявное подтверждение) | Невозможно (неявное подтверждение) |
| АВТОМАТИЧЕСКОЕ ПРИРАЩЕНИЕ | Счетчик сохранен | Счетчик сбрасывается до начального значения. | Прилавок убирается вместе со столом. |
| Скорость работы за большими столами | Медленно (ряд за рядом) | Очень быстро | Очень быстро |
Используйте клавишу DELETE, когда вам нужен фильтр или возможность отката. ОБРЕЗАТЬ ТАБЛИЦУ Используйте команду DROP, когда вам нужно быстро очистить таблицу и сбросить счетчик AUTO_INCREMENT. DROP следует использовать только тогда, когда сама таблица больше не нужна, поскольку она удаляет определение вместе с данными.
