Čo je dotaz DELETE?
Príkaz MySQL DELETE sa používa na odstránenie riadkov, ktoré už nie sú potrebné z databázových tabuliek. Odstráni celý riadok z tabuľky a vráti počet odstránených riadkov. Príkaz Odstrániť je vhodný na odstránenie dočasných alebo zastaraných údajov z databázy.
Vymazávací dotaz v MySQL dokáže vymazať viac ako jeden riadok z tabuľky v jednom dotaze. To sa ukazuje ako výhoda pri odstraňovaní veľkého počtu riadkov z databázovej tabuľky.
Po odstránení riadku Odstrániť v riadku MySQL ho nie je možné obnoviť. Preto sa dôrazne odporúča vykonať zálohy databázy pred odstránením akýchkoľvek údajov z databázy. To vám umožní obnoviť databázu a zobraziť údaje neskôr, ak to bude potrebné.
Ako odstrániť riadok v MySQL
Na odstránenie riadku v MySQL sa používa príkaz DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
TU
- DELETE FROM `table_name` hovorí serveru MySQL, aby odstránil riadky z tabuľky ...
- [WHERE condition] je voliteľné a používa sa na vloženie filtra, ktorý obmedzuje počet riadkov ovplyvnených dotazom na riadok MySQL DELETE.
Ak sa klauzula WHERE nepoužije v dotaze MySQL DELETE, odstránia sa všetky riadky v danej tabuľke.
Príklad dotazu na odstránenie MySQL
Predtým, ako sa podrobnejšie zaoberáme príkazom DELETE, vložme do tabuľky filmov niekoľko vzorových údajov, s ktorými budeme pracovať.
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);
Vykonanie vyššie uvedeného skriptu pridá do tabuľky filmov tri (3) filmy. Než sa pustíme do ďalšej lekcie, poďme si predstaviť všetky filmy v našej tabuľke. Skript zobrazený nižšie to robí.
SELECT * FROM `movies`;
Vykonanie vyššie uvedeného skriptu nám prinesie nasledujúce výsledky.
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 |
Predpokladajme, že videotéka Myflix si už nepraje prenajímať „Veľkého diktátora“ svojim členom a chcú, aby bol odstránený z databázy. Jeho ID filmu je 18, môžeme použiť nižšie uvedený skript na odstránenie jeho riadku z tabuľky filmov.
DELETE FROM `movies` WHERE `movie_id` = 18;
Spustenie vyššie uvedeného skriptu v MySQL WorkBench proti Myflixu vymaže film s id 18 z databázovej tabuľky.
Pozrime sa na tabuľku aktuálneho stavu filmov.
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 |
POZNÁMKA:
- film s ID 18 nebol vrátený v množine výsledkov dotazu.
- pre tabuľku nemôžete odstrániť jeden stĺpec. Môžete odstrániť celý riadok.
Povedzme, že máme zoznam filmov, ktoré chceme odstrániť. Spolu s IN môžeme použiť klauzulu WHERE.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Spustenie vyššie uvedeného skriptu vymaže filmy s ID 20 a 21 z našej tabuľky filmov.
Zhrnutie
- Príkaz delete sa používa na odstránenie údajov, ktoré už z tabuľky nie sú potrebné.
- „Klauzula WHERE“ sa používa na obmedzenie počtu riadkov ovplyvnených dotazom DELETE.
- Po odstránení už údaje nie je možné obnoviť, preto sa dôrazne odporúča zálohovať ich pred odstránením.