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.

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.
