Какво представлява заявката DELETE?
Командата MySQL DELETE се използва за изтриване на редове, които вече не се изискват от таблиците на базата данни. Той изтрива целия ред от таблицата и връща броя на изтритите редове. Командата Delete е полезна за изтриване на временни или остарели данни от вашата база данни.
Заявката за изтриване в MySQL може да изтрие повече от един ред от таблица в една заявка. Това се оказва предимство при премахване на голям брой редове от таблица на базата данни.
След като ред Изтриване в реда MySQL е изтрит, той не може да бъде възстановен. Ето защо е силно препоръчително да направите резервни копия на базата данни, преди да изтриете каквито и да е данни от базата данни. Това може да ви позволи да възстановите базата данни и да ги прегледате по-късно, ако е необходимо.
Как да изтрия ред в MySQL
За да изтриете ред в MySQL, се използва инструкцията DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
ТУК
- ИЗТРИВАНЕ ОТ `table_name` казва на MySQL сървъра да премахне редове от таблицата ...
- [WHERE условие] не е задължително и се използва за поставяне на филтър, който ограничава броя на редовете, засегнати от заявката за реда на MySQL DELETE.
Ако клаузата 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 от нашата филмова таблица.
Обобщение
- Командата delete се използва за премахване на данни, които вече не са необходими от таблица.
- Клаузата „WHERE“ се използва за ограничаване на броя на редовете, засегнати от заявката DELETE.
- След като данните са изтрити, те не могат да бъдат възстановени, затова е силно препоръчително да направите резервни копия, преди да изтриете данни.