MySQL TÖRLÉS Lekérdezés: Hogyan lehet törölni egy sort a táblázatból
⚡ Okos összefoglaló
MySQL A DELETE lekérdezés eltávolítja a táblázatból a már nem szükséges sorokat, és visszaadja az érintett sorok számát. Ez az anyag a DELETE szintaxist, a WHERE szűrést, az IN függvénnyel végzett többsoros törlést, valamint a biztonságosabb alternatívákat, a TRUNCATE és a DROP függvényeket ismerteti.

Mi az a DELETE lekérdezés?
Az MySQL DELETE A DELETE utasítás a már nem szükséges sorok eltávolítására szolgál az adatbázistáblából. Törli a teljes sort a táblából, és visszaadja a törölt sorok számát. A DELETE utasítás akkor hasznos, ha ideiglenes vagy elavult adatokat kell törölni az adatbázisból.
A TÖRLÉS lekérdezés a MySQL egyetlen végrehajtással több sort is eltávolíthat egy táblából. Ez akkor előnyös, ha nagyszámú sort távolít el egy adatbázistáblából.
Ha egy sort töröltek, az nem állítható vissza. Az adatok törlése előtt mindig készítsen biztonsági másolatot az adatbázisról, hogy az adatbázis később szükség esetén visszaállítható és megtekinthető legyen.
Hogyan töröljünk egy sort a MySQL
Miután az utasítás célja világos, a következő lépés a szintaxis. Egy sor törléséhez a MySQL, a DELETE FROM utasítás használatos:
DELETE FROM `table_name` [WHERE condition];
ITT:
- TÖRLÉS FROM `tábla_neve` mondja a MySQL szerver sorokat távolít el a megnevezett táblából.
- [WHERE feltétel] opcionális, és egy olyan szűrő alkalmazására szolgál, amely korlátozza a DELETE lekérdezés által érintett sorok számát.
Ha a WHERE záradék nem használják a MySQL TÖRLÉS lekérdezés, majd minden egy adott táblázat sorai törlődni fognak.
⚠️ Figyelmeztetés: Először futtassa a szűrőt SELECT-ként. Ha pontosan azokat a sorokat adja vissza, amelyeket el szeretne távolítani, akkor a megfelelő DELETE biztonságos. A teljes szintaxis a következő dokumentumban található: MySQL TÖRLÉSI utasítás kézikönyv.
Például az MySQL Lekérdezés törlése
A következő szakasz egy kis adathalmazt épít fel, majd töröl belőle.
1. lépés: Mintaadatok beszúrása
Mielőtt részletesebben belemennénk az SQL DELETE utasítás megvitatásába, illesszünk be néhány mintaadatot a movies táblába a munkához.
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);
A fenti szkript végrehajtása három (3) filmet ad hozzá a filmek táblázathoz. Mielőtt továbbmennénk, listázzuk ki az összes filmet a táblázatunkban.
SELECT * FROM `movies`;
A fenti szkript végrehajtása a következő eredményeket adja. A három újonnan beszúrt sor kiemelve jelenik meg.
| film_id | cím | rendező | év_megjelent | kategória_azonosítója |
|---|---|---|---|---|
| 1 | A Karib-tenger kalózai 4 | Rob Marshall | 2011 | 1 |
| 2 | Sarah Marshal elfelejtése | Nicholas stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Név Fekete | Edgar Jimz | 2010 | NULL |
| 5 | Apa kislányai | NULL | 2007 | 8 |
| 6 | angyalok és démonok | NULL | 2007 | 6 |
| 7 | davinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | Schultz János | 2005 | 8 |
| 16 | 67% bűnös | NULL | 2012 | NULL |
| 18 | A diktátor | Charlie Chaplin | 1940 | 7 |
| 19 | mintafilm | Névtelenül | NULL | 8 |
| 20 | 3. film | John Brown | 1920 | 8 |
2. lépés: Egyetlen sor törlése
Tegyük fel, hogy a Myflix videotéka már nem kívánja kölcsönözni „A nagy diktátor” című filmet, és el akarja távolítani az adatbázisból. A film azonosítója 18, így az alábbi szkript törli ezt a sort.
DELETE FROM `movies` WHERE `movie_id` = 18;
A fenti szkript végrehajtása MySQL munkapad a Myflix adatbázisban végzett keresés törli a 18-as azonosítójú filmet a táblázatból.
Most nézzük meg a filmek táblázatának jelenlegi állapotát.
SELECT * FROM `movies`;
| film_id | cím | rendező | év_megjelent | kategória_azonosítója |
|---|---|---|---|---|
| 1 | A Karib-tenger kalózai 4 | Rob Marshall | 2011 | 1 |
| 2 | Sarah Marshal elfelejtése | Nicholas stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Név Fekete | Edgar Jimz | 2010 | NULL |
| 5 | Apa kislányai | NULL | 2007 | 8 |
| 6 | angyalok és démonok | NULL | 2007 | 6 |
| 7 | davinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | Schultz János | 2005 | 8 |
| 16 | 67% bűnös | NULL | 2012 | NULL |
| 19 | mintafilm | Névtelenül | NULL | 8 |
| 20 | 3. film | John Brown | 1920 | 8 |
JEGYZET:
- A 18-as azonosítójú film már nem jelenik meg a lekérdezés eredményhalmazában.
- Nem törölhetsz egyetlen oszlopot egy táblázatból a DELETE paranccsal. Az utasítás egy egész sort távolít el. Egy mező törléséhez használd a FRISSÍTÉS lekérdezés ami NULL értékre állítja az oszlopot.
3. lépés: Több sor törlése IN paranccsal
Tegyük fel, hogy van egy listánk a törölni kívánt filmekről. Ahelyett, hogy soronként egy utasítást futtatnánk, kombinálhatjuk a WHERE záradékot az IN operátorral.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
A fenti szkript végrehajtása egyetlen menetben törli a 20-as és 21-es azonosítójú filmeket a filmek táblázatából.
TÖRLÉS vs. CSONKOLÁS vs. BEVITEL MySQL
A TÖRLÉS nem az egyetlen módja az adatok eltávolításának MySQLA kezdők gyakran akkor nyúlnak hozzá, ha egy gyorsabb parancs jobban illik hozzájuk, ezért az alábbi táblázat összehasonlítja a három eltávolító parancsot.
| Jellemző | DELETE | CSONKA | DROP |
|---|---|---|---|
| Parancstípus | DML | DDL | DDL |
| WHERE záradék | Támogatott | Nem támogatott | Nem támogatott |
| Mi kerül eltávolításra | Kijelölt sorok | Minden sor | Sorok és táblázatszerkezet |
| Rollback | Tranzakción belül lehetséges | Nem lehetséges (implicit commit) | Nem lehetséges (implicit commit) |
| AUTO_INCREMENT | A számláló megmarad | A számláló visszaáll a kezdőértékre | A számlálót az asztallal együtt eltávolítják |
| Sebesség nagy asztalokon | Lassú (sorról sorra) | Nagyon gyors | Nagyon gyors |
Használd a DELETE parancsot, ha szűrőre vagy a korábbi állapot visszaállításának lehetőségére van szükséged. TRUNCATE TÁBLÁZAT ha gyorsan ki akarsz üríteni egy táblát és vissza szeretnéd állítani az AUTO_INCREMENT számlálóját. A DROP függvényt csak akkor használd, ha magára a táblára már nincs szükség, mert ez az adatokkal együtt eltávolítja a definíciót is.
