MySQL DELETE Query: Как да изтриете ред от таблица
⚡ Умно обобщение
MySQL Заявката DELETE премахва ненужни редове от таблица и връща броя на засегнатите редове. Този ресурс обяснява синтаксиса на DELETE, филтрирането WHERE, изтриването на няколко реда с IN и по-безопасните алтернативи TRUNCATE и DROP.

Какво представлява заявката за ИЗТРИВАНЕ?
- MySQL ИЗТРИЙ Операторът DELETE се използва за премахване на редове, които вече не са необходими от таблицата в базата данни. Той изтрива целия ред от таблицата и връща броя на изтритите редове. Операторът DELETE е полезен, когато трябва да изчистите временни или остарели данни от вашата база данни.
Заявката за изтриване в MySQL може да премахне повече от един ред от таблица с едно изпълнение. Това се оказва предимство, когато премахвате голям брой редове от таблица в база данни.
След като даден ред бъде изтрит, той не може да бъде възстановен. Винаги правете резервно копие на базата данни, преди да изтриете данни, за да може тя да бъде възстановена и прегледана по-късно, ако е необходимо.
Как да изтриете ред в MySQL
След като целта на оператора е ясна, следващата стъпка е синтаксисът. За да изтриете ред в MySQL, изразът DELETE FROM се използва:
DELETE FROM `table_name` [WHERE condition];
ТУК:
- ИЗТРИВАНЕ ОТ `table_name` казва на MySQL сървърът да премахне редове от посочената таблица.
- [Условие WHERE] е незадължителен и се използва за прилагане на филтър, който ограничава броя на редовете, засегнати от заявката DELETE.
Ако WHERE клауза не се използва в MySQL ИЗТРИВАНЕ на заявка, след това all редовете в дадена таблица ще бъдат изтрити.
⚠️ Предупреждение: Първо изпълнете филтъра като SELECT. Ако върне точно редовете, които искате да премахнете, съответстващото DELETE е безопасно. Пълният синтаксис е документиран в MySQL Ръководство за изтриване на оператор.
Пример за 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 | заглавие | директор | year_released | категория_id |
|---|---|---|---|---|
| 1 | Карибски пирати 4 | Rob Marshall | 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 | примерен филм | анонимен | NULL | 8 |
| 20 | филм 3 | Джон Браун | 1920 | 8 |
Стъпка 2: Изтриване на един ред
Да предположим, че видеотеката на Myflix вече не желае да отдава под наем „Великият диктатор“ и иска той да бъде премахнат от базата данни. Идентификаторът на филма е 18, така че скриптът по-долу изтрива този ред.
DELETE FROM `movies` WHERE `movie_id` = 18;
Изпълнение на горния скрипт в MySQL Работна маса Сравняването с базата данни на Myflix изтрива филма с идентификатор 18 от таблицата.
Нека сега проверим текущото състояние на таблицата с филми.
SELECT * FROM `movies`;
| movie_id | заглавие | директор | year_released | категория_id |
|---|---|---|---|---|
| 1 | Карибски пирати 4 | Rob Marshall | 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 | примерен филм | анонимен | NULL | 8 |
| 20 | филм 3 | Джон Браун | 1920 | 8 |
ЗАБЕЛЕЖКА:
- Филмът с идентификатор 18 вече не се връща в набора от резултати от заявката.
- Не можете да изтриете една колона от таблица с DELETE. Операторът премахва цял ред. За да изчистите едно поле, използвайте АКТУАЛИЗИРАНЕ на заявката което задава колоната на NULL.
Стъпка 3: Изтриване на няколко реда с IN
Да кажем, че имаме списък с филми, които искаме да изтрием. Вместо да изпълняваме по един оператор на ред, можем да комбинираме клаузата WHERE с оператора IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Изпълнението на горния скрипт изтрива филмите с идентификатори 20 и 21 от нашата таблица с филми наведнъж.
ИЗТРИВАНЕ срещу ОТРЕЖАВАНЕ срещу ВКЛЮЧВАНЕ MySQL
ИЗТРИВАНЕТО не е единственият начин за премахване на данни от MySQLНачинаещите често посягат към него, когато по-бърза команда би им подхождала по-добре, така че таблицата по-долу сравнява трите команди за премахване.
| Особеност | ИЗТРИЙ | ПРЕКРАТЕТЕ | Капка |
|---|---|---|---|
| Тип команда | ГСД | DDL | DDL |
| WHERE клауза | Подкрепа | Не се поддържа | Не се поддържа |
| Какво се премахва | Избрани редове | Всички редове | Редове и структура на таблицата |
| общо намаление на цените | Възможно е в рамките на транзакция | Не е възможно (имплицитен коммит) | Не е възможно (имплицитен коммит) |
| АВТОМАТИЧНО УВЕЛИЧАВАНЕ | Броячът се запазва | Броячът се нулира до началната стойност | Броячът се отстранява заедно с масата |
| Скорост на големи маси | Бавно (ред по ред) | Много бързо | Много бързо |
Използвайте DELETE, когато ви е необходим филтър или възможност за връщане назад. Използвайте ТРАНСКАТА МАСА когато искате бързо да изпразните таблица и да нулирате нейния брояч AUTO_INCREMENT. Използвайте DROP само когато самата таблица вече не е необходима, защото това премахва дефиницията заедно с данните.
