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.

  • 🗑️ Alapvető nyilatkozat: A DELETE FROM `table_name` [WHERE feltétel] teljes sorokat távolít el, és visszaadja a törölt sorok számát.
  • ⚠️ Kihagyva WHERE: A WHERE záradék elhagyása törli a táblázat összes sorát, ezért végrehajtás előtt mindig szűrjünk.
  • 🎯 Targeteltávolítása: A WHERE `movie_id` = 18 egy rekordot távolít el, míg a WHERE `movie_id` IN (20,21) többet távolít el egyetlen utasítással.
  • 🔁 Visszafordíthatatlan hatás: A törölt adatok biztonsági mentés nélkül nem állíthatók vissza, ezért a DELETE parancs futtatása előtt készítsen biztonsági másolatot az adatbázisról.
  • 📊 Sor szintű hatókör: A DELETE parancs csak a teljes sorokat távolítja el; egyetlen oszlopérték törlése UPDATE parancsot igényel NULL értékkel.
  • 🇧🇷 TÖRLÉS vs. CSONKOLÁS vs. ELdobás: A DELETE szűri a sorokat, a TRUNCATE azonnal kiüríti a táblát, a DROP pedig eltávolítja magát a tábla szerkezetét.

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.

GYIK

Csak nyitott tranzakción belül. Futtassa a START TRANSACTION parancsot, hajtsa végre a DELETE parancsot, majd a ROLLBACK paranccsal vonja vissza. COMMIT után vagy engedélyezett automatikus véglegesítés esetén a sorok elvesznek, és csak egy biztonsági mentéssel állíthatók vissza.

Használjon többtáblás DELETE parancsot egy JOIN, mindkét táblát a FROM kulcsszó előtt nevezve el. Alternatív megoldásként az idegen kulcsot az ON DELETE CASCADE paranccsal definiálhatja, így a gyermeksorok automatikusan eltávolításra kerülnek a szülősor törlésekor.

A Biztonságos frissítési mód alapértelmezés szerint engedélyezve van a MySQL WorkbenchElutasítja azokat a DELETE utasításokat, amelyek WHERE záradéka nem kulcsoszlopot használ, megakadályozva ezzel a véletlen teljes tábla törlését. Tiltsa le a Szerkesztés > Beállítások > SQL-szerkesztő menüpontban.

Igen. Az MI-asszisztensek lefordítják a sima angol kéréseket DELETE szintaxisra, és el tudják magyarázni a WHERE záradékot. Mindig először nézd át a létrehozott szűrőt egy SELECT függvény alapján, mert egy MI-modell nem láthatja az élő adatokat.

Nem. Hagyd, hogy a mesterséges intelligencia vázlatot készítsen az utasításról, de először te magad hajtsd végre egy biztonsági mentésen vagy átmeneti másolaton. Egy hiányzó WHERE záradék minden sort töröl, és ezt egyetlen mesterséges intelligencia eszköz sem tudja visszafordítani, miután a tranzakció véglegesítve lett.

Foglald össze ezt a bejegyzést a következőképpen: