Mi a DELETE lekérdezés?
A MySQL DELETE paranccsal törölhetők a már nem szükséges sorok az adatbázis táblákból. Törli az egész sort a táblából, és visszaadja a törölt sorok számát. A Delete parancs hasznos ideiglenes vagy elavult adatok törléséhez az adatbázisból.
A MySQL lekérdezés törlése egy sorban több sort is törölhet egy táblázatból. Ez előnyöknek bizonyul, ha nagy számú sort távolít el az adatbázis-táblából.
Miután törölt egy sort a MySQL sorban, azt nem lehet helyreállítani. Ezért erősen ajánlott biztonsági másolatot készíteni az adatbázisról, mielőtt az adatokat törölné az adatbázisból. Ez lehetővé teszi az adatbázis visszaállítását és az adatok későbbi megtekintését, ha szükséges.
Sor törlése a MySQL-ben
Egy sor törléséhez a MySQL-ben a DELETE FROM utasítást kell használni:
DELETE FROM `table_name` [WHERE condition];
ITT
- A DELETE FROM "tábla_neve" utasítja a MySQL szervert, hogy távolítsa el a sorokat a táblából ...
- A [WHERE feltétel] opcionális, és olyan szűrő elhelyezésére szolgál, amely korlátozza a MySQL DELETE sor lekérdezés által érintett sorok számát.
Ha a WHERE záradékot nem használják a MySQL DELETE lekérdezésben, akkor az adott táblázat összes sora törlődik.
Példa MySQL törlési lekérdezésre
Mielőtt részletesebben a DELETE paranccsal foglalkoznánk, illesszünk be néhány mintaadatot a filmtáblázatba, amellyel együtt dolgozhatunk.
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);
A fenti szkript végrehajtása három (3) filmet ad hozzá a mozitáblához. Mielőtt tovább mennénk a leckénkbe, vegyük az összes filmet az asztalunkba. Az alább látható szkript ezt teszi.
SELECT * FROM `movies`;
A fenti parancsfájl végrehajtása a következő eredményeket adja nekünk.
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 |
Tegyük fel, hogy a Myflix videotár nem kívánja többé kiadni a "The Great Dictator" -t a tagjainak, és azt akarják, hogy töröljék az adatbázisból. Filmazonosítója 18, az alább látható szkript segítségével törölhetjük a sorát a mozitábláról.
DELETE FROM `movies` WHERE `movie_id` = 18;
A fenti parancsfájl végrehajtása a MySQL WorkBench alkalmazásban a Myflix ellen törli a 18 azonosítójú filmet az adatbázis táblából.
Nézzük meg a filmek jelenlegi állapotát.
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 |
JEGYZET:
- a 18. azonosítójú film nem került vissza a lekérdezés eredményhalmazába.
- nem törölhet egyetlen oszlopot egy táblához. Egy teljes sort törölhet.
Tegyük fel, hogy van egy listánk azokról a filmekről, amelyeket törölni akarunk. Használhatjuk a WHERE záradékot az IN-vel együtt.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
A fenti szkript végrehajtása törli a 20. és 21. azonosítójú filmeket a filmtáblázatunkból.
Összegzés
- A törlés paranccsal olyan adatokat lehet eltávolítani, amelyekre már nincs szükség a táblából.
- A "WHERE záradék" a DELETE lekérdezés által érintett sorok számának korlátozására szolgál.
- Az adatok törlése után azokat nem lehet helyreállítani, ezért erősen ajánlott biztonsági másolatot készíteni az adatok törlése előtt.