Kas ir DELETE vaicājums?
MySQL DELETE komandu izmanto, lai izdzēstu no datu bāzes tabulām vairs nevajadzīgas rindas. Tas izdzēš visu tabulas rindu un atgriež izdzēsto rindu skaitu. Komanda Dzēst ir noderīga, lai no datubāzes izdzēstu pagaidu vai novecojušus datus.
Izmantojot MySQL vaicājumu Dzēst, vienā vaicājumā no tabulas var izdzēst vairākas rindas. Tas izrādās priekšrocības, ja no datu bāzes tabulas tiek noņemts liels rindu skaits.
Kad rinda MySQL ir izdzēsta rinda Dzēst, to vairs nevar atjaunot. Tāpēc pirms datu dzēšanas no datu bāzes ir ļoti ieteicams izveidot datu bāzes dublējumus. Tas var ļaut jums atjaunot datu bāzi un skatīt datus vēlāk, ja tas būs nepieciešams.
Kā izdzēst rindu MySQL
Lai izdzēstu rindu MySQL, tiek izmantots priekšraksts DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
ŠEIT
- DELETE FROM "table_name" liek MySQL serverim noņemt tabulas rindas…
- [WHERE nosacījums] nav obligāts, un to izmanto, lai ievietotu filtru, kas ierobežo rindu skaitu, uz kuru attiecas rindas vaicājums MySQL DELETE.
Ja WHERE klauzula netiek izmantota MySQL DELETE vaicājumā, visas norādītās tabulas rindas tiks dzēstas.
MySQL Delete Query piemērs
Pirms iedziļināties sīkāk diskusijā par komandu DELETE, ievietosim dažus datu paraugus filmu tabulā, ar kuru strādāt.
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);
Izpildot iepriekš minēto skriptu, filmu tabulā tiek pievienotas trīs (3) filmas. Pirms dodamies tālāk savā nodarbībā, uzņemsim visas filmas savā tabulā. Zemāk parādītais skripts to dara.
SELECT * FROM `movies`;
Izpildot iepriekš minēto skriptu, mēs iegūstam šādus rezultātus.
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 |
Pieņemsim, ka Myflix videotēka vairs nevēlas izīrēt "Lielo diktatoru" saviem biedriem un viņi vēlas, lai tā tiktu noņemta no datu bāzes. Tās filmas ID ir 18, mēs varam izmantot zemāk redzamo skriptu, lai dzēstu tā rindu no filmu tabulas.
DELETE FROM `movies` WHERE `movie_id` = 18;
Izpildot iepriekš minēto skriptu MySQL WorkBench pret Myflix, filma ar ID 18 tiek izdzēsta no datu bāzes tabulas.
Apskatīsim filmu tabulas pašreizējo statusu.
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 |
PIEZĪME:
- filma ar ID 18 vaicājuma rezultātu komplektā nav atgriezta.
- tabulai nevar izdzēst vienu kolonnu. Jūs varat izdzēst visu rindu.
Pieņemsim, ka mums ir to filmu saraksts, kuras mēs vēlamies izdzēst. Mēs varam izmantot klauzulu WHERE kopā ar IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Veicot iepriekš minēto skriptu, filmas ar ID 20 un 21 tiek dzēstas no mūsu filmu tabulas.
Kopsavilkums
- Komanda Dzēst tiek izmantota, lai no tabulas noņemtu datus, kas vairs nav nepieciešami.
- Klauzula WHERE tiek izmantota, lai ierobežotu to rindu skaitu, kuras ietekmē vaicājums DELETE.
- Kad dati ir izdzēsti, tos vairs nevar atgūt, tāpēc pirms datu dzēšanas ir ļoti ieteicams veikt dublējumus.