MySQL Kustutuspäring: kuidas tabelist rida kustutada

⚡ Nutikas kokkuvõte

MySQL Kustutuspäring eemaldab tabelist mittevajalikud read ja tagastab mõjutatud ridade arvu. See ressurss selgitab kustutuspäringu süntaksit, WHERE-filtreerimist, mitme rea kustutamist IN-funktsiooniga ning ohutumaid alternatiive TRUNCATE ja DROP.

  • 🗑️ Põhiväide: DELETE FROM `tabeli_nimi` [WHERE tingimus] eemaldab terved read ja tagastab kustutatud ridade arvu.
  • ⚠️ Välja jäetud WHERE: WHERE-klausli väljajätmine kustutab tabeli kõik read, seega filtreerige alati enne käivitamist.
  • 🎯 Targeteemaldamine: WHERE `movie_id` = 18 eemaldab ühe kirje, samas kui WHERE `movie_id` IN (20,21) eemaldab ühe lausega mitu.
  • 🔁 Pöördumatu toime: Kustutatud andmeid ei saa ilma varukoopiata taastada, seega varundage andmebaas enne DELETE käivitamist.
  • 📊 Rea tasemel ulatus: DELETE eemaldab ainult terved read; ühe veeru väärtuse kustutamiseks on vaja UPDATE'i väärtusega NULL.
  • 🇧🇷 KUSTUTA vs KÄRBI vs KUKSTA: DELETE filtreerib read, TRUNCATE tühjendab tabeli koheselt ja DROP eemaldab tabeli struktuuri enda.

Mis on DELETE päring?

. MySQL Kustuta Lause DELETE abil eemaldatakse andmebaasitabelist read, mida enam ei vajata. See kustutab tabelist terve rea ja tagastab kustutatud ridade arvu. Lause DELETE on mugav, kui peate andmebaasist kustutama ajutised või vananenud andmed.

Kustutuspäring MySQL saab tabelist ühe teostuse käigus eemaldada rohkem kui ühe rea. See osutub eeliseks siis, kui andmebaasi tabelist eemaldatakse suur hulk ridu.

Kui rida on kustutatud, ei saa seda taastada. Enne andmete kustutamist tehke alati andmebaasist varukoopia, et andmebaasi saaks vajadusel hiljem taastada ja üle vaadata.

Kuidas rida kustutada MySQL

Kuna lause eesmärk on selge, on järgmine samm süntaks. Rea kustutamiseks MySQL, kasutatakse käsku DELETE FROM:

DELETE FROM `table_name` [WHERE condition];

SIIN:

  • KUSTUTA tabelist `tabeli_nimi` ütleb MySQL server nimega tabelist ridade eemaldamiseks.
  • [KUS tingimus] on valikuline ja seda kasutatakse filtri rakendamiseks, mis piirab DELETE päringu poolt mõjutatud ridade arvu.

Kui KUS klausel ei kasutata MySQL Kustuta päring, seejärel kõik antud tabeli read kustutatakse.

⚠️ Hoiatus: Käivita filter esmalt SELECT-käsuna. Kui see tagastab täpselt need read, mida soovid eemaldada, on vastav DELETE turvaline. Täielik süntaks on dokumenteeritud MySQL Kustuta avaldus käsiraamat.

Näide MySQL Kustuta päring

Järgmises osas luuakse väike andmekogum ja seejärel kustutatakse sellest.

1. samm: näidisandmete sisestamine

Enne kui SQL DELETE lause üksikasjalikumat arutelu alustame, lisame filmide tabelisse mõned näidisandmed, millega töötada.

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);

Ülaltoodud skripti käivitamine lisab filmide tabelisse kolm (3) filmi. Enne edasiminekut loetleme kõik meie tabelis olevad filmid.

SELECT * FROM `movies`;

Ülaltoodud skripti käivitamine annab järgmised tulemused. Kolm äsja lisatud rida on esile tõstetud.

filmi_id pealkiri juhataja aasta_välja antud kategooria_id
1 Kariibi mere piraadid 4 Rob Marshall 2011 1
2 Unustades Sarah Marshali Nicholas stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Nimi Must Edgar Jimz 2010 NULL
5 Isa väikesed tüdrukud NULL 2007 8
6 Inglid ja deemonid NULL 2007 6
7 davinci Code NULL 2007 6
9 Honey moontv John Schultz 2005 8
16 67% süüdi NULL 2012 NULL
18 Suur Diktaator Charlie Chaplin 1940 7
19 näidisfilm anonüümne NULL 8
20 film 3 John Brown 1920 8

2. samm: kustutage üks rida

Oletame, et Myflixi videoteek ei soovi enam filmi „Suur Diktaator” laenutada ja soovib selle andmebaasist eemaldada. Selle filmi ID on 18, seega kustutab allolev skript selle rea.

DELETE FROM `movies` WHERE `movie_id` = 18;

Ülaltoodud skripti käivitamine MySQL töölaud Myflixi andmebaasi vastu kustutab tabelist filmi ID-ga 18.

Kontrollime nüüd filmide tabeli praegust olekut.

SELECT * FROM `movies`;
filmi_id pealkiri juhataja aasta_välja antud kategooria_id
1 Kariibi mere piraadid 4 Rob Marshall 2011 1
2 Unustades Sarah Marshali Nicholas stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Nimi Must Edgar Jimz 2010 NULL
5 Isa väikesed tüdrukud NULL 2007 8
6 Inglid ja deemonid NULL 2007 6
7 davinci Code NULL 2007 6
9 Honey moontv John Schultz 2005 8
16 67% süüdi NULL 2012 NULL
19 näidisfilm anonüümne NULL 8
20 film 3 John Brown 1920 8

MÄRKUS:

  • Filmi ID-ga 18 päringu tulemuste komplektis enam ei tagastata.
  • Tabelist ei saa DELETE abil üksikut veergu kustutada. See käsk eemaldab terve rea. Ühe välja tühjendamiseks kasutage UPDATE päring mis määrab veeru väärtuseks NULL.

3. samm: kustutage mitu rida IN-iga

Oletame, et meil on filmide loend, mida soovime kustutada. Selle asemel, et käivitada üks lause rea kohta, saame kombineerida WHERE-klausli IN-operaatoriga.

DELETE FROM `movies` WHERE `movie_id` IN (20,21);

Ülaltoodud skripti käivitamine kustutab meie filmide tabelist filmid ID-dega 20 ja 21 ühe korraga.

KUSTUTA vs KÄRBI vs KUJUTA sisse MySQL

KUSTUTAMINE pole ainus viis andmete eemaldamiseks MySQLAlgajad haaravad selle järele sageli siis, kui kiirem käsk sobiks paremini, seega võrdleb allolev tabel kolme eemaldamiskäsku.

tunnusjoon Kustuta KÕRBI DROP
Käsu tüüp DML DDL DDL
KUS klausel Toetatud Ei toetata Ei toetata
Mis eemaldatakse Valitud read Kõik read Read ja tabeli struktuur
Tagastus Võimalik tehingu sees Pole võimalik (kaudne muudatus) Pole võimalik (kaudne muudatus)
AUTO_INCREMENT Loendur jääb alles Loendur lähtestatakse algväärtusele Loendur eemaldatakse koos lauaga
Kiirus suurtel laudadel Aeglaselt (rida-realt) Väga kiiresti Väga kiiresti

Kasutage DELETE'i, kui vajate filtrit või võimalust tagasi pöörata. LÕPPETABEL kui soovite tabeli kiiresti tühjendada ja selle AUTO_INCREMENT loenduri lähtestada. Kasutage DROP-i ainult siis, kui tabelit ennast enam vaja pole, sest see eemaldab koos andmetega ka definitsiooni.

KKK

Ainult avatud tehingu sees. Käivita START TRANSACTION, täida DELETE ja seejärel tühista ROLLBACK. Pärast COMMIT'i või automaatse kinnitamise lubamisel on read kadunud ja neid saab taastada ainult varukoopia abil.

Kasutage mitme tabeli DELETE-i koos a-ga LIITU, nimetades mõlemad tabelid enne märksõna FROM. Teise võimalusena saab võõrvõtme defineerida funktsiooniga ON DELETE CASCADE, nii et lapseread eemaldatakse automaatselt, kui vanemrea kustutatakse.

Turvaline värskendusrežiim on vaikimisi lubatud MySQL WorkbenchSee lükkab tagasi kõik DELETE käsud, mille WHERE-klausel ei kasuta võtmeveergu, hoides ära juhuslikud terve tabeli kustutamised. Keelake see menüüs Redigeerimine > Eelistused > SQL-redaktor.

Jah. Tehisintellekti assistendid tõlgivad lihtsa inglise keele päringu DELETE süntaksiks ja oskavad selgitada WHERE-klauslit. Vaadake loodud filter alati esmalt üle SELECT-käsu suhtes, sest tehisintellekti mudel ei näe teie reaalajas andmeid.

Ei. Laske tehisintellektil lause mustandi koostada, aga käivitage see esmalt ise varukoopial või algversioonis. Puuduv WHERE-klausel kustutab kõik read ja ükski tehisintellekti tööriist ei saa seda pärast tehingu kinnitamist tagasi pöörata.

Võta see postitus kokku järgmiselt: