Что такое запрос DELETE?
Команда MySQL DELETE используется для удаления ненужных строк из таблиц базы данных. Он удаляет всю строку из таблицы и возвращает количество удаленных строк. Команда «Удалить» пригодится для удаления временных или устаревших данных из вашей базы данных.
Запрос на удаление в MySQL может удалить более одной строки из таблицы за один запрос. Это оказывается преимуществом при удалении большого количества строк из таблицы базы данных.
После удаления строки Delete в строке MySQL ее невозможно восстановить. Поэтому настоятельно рекомендуется делать резервные копии базы данных перед удалением любых данных из базы данных. Это может позволить вам восстановить базу данных и просмотреть данные позже, если это потребуется.
Как удалить строку в MySQL
Чтобы удалить строку в MySQL, используется оператор DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
ЗДЕСЬ
- DELETE FROM `table_name` сообщает серверу MySQL удалить строки из таблицы ...
- [WHERE condition] является необязательным и используется для установки фильтра, ограничивающего количество строк, затронутых запросом MySQL DELETE row.
Если предложение WHERE не используется в запросе MySQL DELETE, то все строки в данной таблице будут удалены.
Пример запроса на удаление MySQL
Прежде чем мы перейдем к более подробному обсуждению команды DELETE, давайте вставим несколько примеров данных в таблицу фильмов для работы.
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Chalie Chaplie', 1920, 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 | itle | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% Guilty | NULL | 2012 | NULL |
18 | The Great Dictator | Chalie Chaplie | 1920 | 7 |
19 | sample movie | Anonymous | NULL | 8 |
20 | movie 3 | John Brown | 1920 | 8 |
Предположим, что видеотека Myflix больше не желает сдавать в аренду «Великого диктатора» своим членам, и они хотят, чтобы он был удален из базы данных. Его идентификатор фильма - 18, мы можем использовать сценарий, показанный ниже, чтобы удалить его строку из таблицы фильмов.
DELETE FROM `movies` WHERE `movie_id` = 18;
Выполнение вышеуказанного сценария в MySQL WorkBench против Myflix удаляет фильм с идентификатором 18 из таблицы базы данных.
Посмотрим текущий статус таблицы фильмов.
SELECT * FROM `movies`;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
3 | X-Men | NULL | 2008 | NULL |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
16 | 67% Guilty | NULL | 2012 | NULL |
19 | sample movie | Anonymous | NULL | 8 |
20 | movie 3 | John Brown | 1920 | 8 |
ПРИМЕЧАНИЕ:
- фильм с идентификатором 18 не был возвращен в наборе результатов запроса.
- вы не можете удалить один столбец из таблицы. Вы можете удалить всю строку.
Допустим, у нас есть список фильмов, которые мы хотим удалить. Мы можем использовать предложение WHERE вместе с IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Выполнение вышеуказанного скрипта удаляет фильмы с идентификаторами 20 и 21 из нашей таблицы фильмов.
Резюме
- Команда удаления используется для удаления данных, которые больше не требуются из таблицы.
- Предложение WHERE используется для ограничения количества строк, затронутых запросом DELETE.
- После удаления данные не могут быть восстановлены, поэтому настоятельно рекомендуется сделать резервные копии перед удалением данных.