MySQL POISTA-kysely: Kuinka poistaa rivi taulukosta

โšก ร„lykรคs yhteenveto

MySQL DELETE-kysely poistaa taulukosta rivit, joita ei enรครค tarvita, ja palauttaa niiden rivien mรครคrรคn, joihin tรคmรค vaikuttaa. Tรคmรค resurssi selittรครค DELETE-syntaksin, WHERE-suodatuksen, usean rivin poiston IN-operaattorilla sekรค turvallisemmat vaihtoehdot TRUNCATE ja DROP.

  • ๐Ÿ—‘๏ธ Ydinlausunto: DELETE FROM `table_name` [WHERE-ehto] poistaa kokonaiset rivit ja palauttaa poistettujen rivien mรครคrรคn.
  • โš ๏ธ Pois jรคtetty WHERE: WHERE-lauseen poisjรคttรคminen poistaa kaikki taulukon rivit, joten suodata aina ennen suorittamista.
  • ๐ŸŽฏ Targeted:n poisto: WHERE `movie_id` = 18 poistaa yhden tietueen, kun taas WHERE `movie_id` IN (20,21) poistaa useita yhdellรค lausekkeella.
  • ๐Ÿ” Peruuttamaton toiminta: Poistettuja tietoja ei voida palauttaa ilman varmuuskopiota, joten varmuuskopioi tietokanta ennen DELETE-komennon suorittamista.
  • ๐Ÿ“Š Rivitason laajuus: DELETE poistaa vain kokonaisia โ€‹โ€‹rivejรค; yhden sarakkeen arvon tyhjentรคminen vaatii UPDATE-komennon ja NULL-arvon.
  • ๐Ÿ‡ง๐Ÿ‡ท POISTA vs. LYHENNY vs. PUDOTA: DELETE suodattaa rivit, TRUNCATE tyhjentรครค taulukon vรคlittรถmรคsti ja DROP poistaa itse taulukkorakenteen.

Mikรค on DELETE-kysely?

MySQL POISTA lauseketta kรคytetรครคn poistamaan rivejรค, joita ei enรครค tarvita tietokantataulukosta. Se poistaa koko rivin taulukosta ja palauttaa poistettujen rivien mรครคrรคn. DELETE-lauseke on kรคtevรค, kun sinun on poistettava vรคliaikaisia โ€‹โ€‹tai vanhentuneita tietoja tietokannastasi.

POISTA-kysely kohdassa MySQL voi poistaa useamman kuin yhden rivin taulukosta yhdellรค suorituksella. Tรคstรค on hyรถtyรค, kun poistat suuria mรครคriรค rivejรค tietokantataulukosta.

Kun rivi on poistettu, sitรค ei voi palauttaa. Tee aina tietokannasta varmuuskopio ennen tietojen poistamista, jotta tietokanta voidaan palauttaa ja tarkastella myรถhemmin tarvittaessa.

Rivin poistaminen MySQL

Kun lausekkeen tarkoitus on selvรค, seuraava vaihe on syntaksi. Rivin poistaminen kohdassa MySQL, DELETE FROM -kรคskyรค kรคytetรครคn:

DELETE FROM `table_name` [WHERE condition];

Tร„STร„:

  • POISTA `taulukon_nimi`-taulukosta kertoo MySQL palvelinta rivien poistamiseksi nimetystรค taulukosta.
  • [WHERE ehto] on valinnainen ja sitรค kรคytetรครคn suodattimen kรคyttรคmiseen, joka rajoittaa DELETE-kyselyn vaikutuspiirissรค olevien rivien mรครคrรครค.

Jos WHERE-lauseke ei kรคytetรค MySQL POISTA kysely ja sitten kaikki tietyn taulukon rivit poistetaan.

โš ๏ธ Varoitus: Suorita suodatin ensin SELECT-kรคskyllรค. Jos se palauttaa tรคsmรคlleen ne rivit, jotka haluat poistaa, vastaava DELETE-kรคsky on turvallinen. Koko syntaksi on dokumentoitu kohdassa MySQL POISTA-lausekkeen kรคyttรถohje.

Esimerkki MySQL Poista kysely

Seuraavassa osiossa luodaan pieni tietojoukko ja poistetaan siitรค sitten tietoja.

Vaihe 1: Lisรครค esimerkkitiedot

Ennen kuin siirrymme yksityiskohtaisempaan keskusteluun SQL DELETE -lauseesta, lisรคtรครคn esimerkkidataa movies-taulukkoon tyรถskentelyรค varten.

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

Yllรค olevan skriptin suorittaminen lisรครค kolme (3) elokuvaa elokuvat-taulukkoon. Ennen kuin jatkamme, listataan kaikki taulukossamme olevat elokuvat.

SELECT * FROM `movies`;

Yllรค olevan komentosarjan suorittaminen antaa seuraavat tulokset. Kolme uutta riviรค on korostettu.

elokuvan_tunnus otsikko johtaja vuosi_vapautettu kategorian_tunnus
1 Pirates of the Caribbean 4 Rob Marshall 2011 1
2 Sarah Marshal unohdetaan Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Nimi Musta Edgar Jimz 2010 NULL
5 Isรคn pienet tytรถt NULL 2007 8
6 enkelit ja demonit NULL 2007 6
7 DaVinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% syyllinen NULL 2012 NULL
18 Diktaattori Charlie Chaplin 1940 7
19 esimerkkielokuva anonyymi NULL 8
20 elokuva 3 John Brown 1920 8

Vaihe 2: Poista yksi rivi

Oletetaan, ettรค Myflix-videokirjasto ei enรครค halua vuokrata elokuvaa โ€The Great Dictatorโ€ ja haluaa sen poistettavan tietokannasta. Elokuvan tunniste on 18, joten alla oleva skripti poistaa kyseisen rivin.

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

Suoritetaan yllรค oleva komentosarja MySQL tyรถpรถytรค Myflix-tietokantaa vastaan โ€‹โ€‹poistaa taulukosta elokuvan, jonka id on 18.

Tarkistetaan nyt elokuvataulukon nykytila.

SELECT * FROM `movies`;
elokuvan_tunnus otsikko johtaja vuosi_vapautettu kategorian_tunnus
1 Pirates of the Caribbean 4 Rob Marshall 2011 1
2 Sarah Marshal unohdetaan Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Nimi Musta Edgar Jimz 2010 NULL
5 Isรคn pienet tytรถt NULL 2007 8
6 enkelit ja demonit NULL 2007 6
7 DaVinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% syyllinen NULL 2012 NULL
19 esimerkkielokuva anonyymi NULL 8
20 elokuva 3 John Brown 1920 8

HUOMAUTUS:

  • Elokuvaa, jonka id on 18, ei enรครค palauta kyselyn tulosjoukossa.
  • Et voi poistaa yksittรคistรค saraketta taulukosta DELETE-komennolla. Lause poistaa kokonaisen rivin. Yhden kentรคn tyhjentรคmiseksi kรคytรค Pร„IVITYSkysely joka asettaa sarakkeen arvoksi NULL.

Vaihe 3: Poista useita rivejรค IN-komennolla

Oletetaan, ettรค meillรค on lista elokuvista, jotka haluamme poistaa. Sen sijaan, ettรค suorittaisimme yhden lausekkeen riviรค kohden, voimme yhdistรครค WHERE-lauseen IN-operaattoriin.

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

Yllรค olevan komentosarjan suorittaminen poistaa ID:t 20 ja 21 omaavien elokuvat elokuvataulukostamme yhdellรค kertaa.

POISTA vs. LYHENNETTY vs. PUDOTA sisรครคn MySQL

POISTA ei ole ainoa tapa poistaa tietoja MySQLAloittelijat usein tarttuvat siihen, kun nopeampi komento sopisi paremmin, joten alla olevassa taulukossa vertaillaan kolmea poistokomentoa.

Ominaisuus POISTA KATKAISTA DROP
Komentotyyppi DML DDL DDL
WHERE-lauseke Tuetut Ei tuettu Ei tuettu
Mitรค poistetaan Valitut rivit Kaikki rivit Rivit ja taulukon rakenne
Hintojen lasku Mahdollista transaktion sisรคllรค Ei mahdollista (implisiittinen commit) Ei mahdollista (implisiittinen commit)
AUTO_INCREMENT Laskuri sรคilyy Laskuri nollautuu aloitusarvoon Laskuri poistetaan pรถydรคn mukana
Nopeus suurilla pรถydillรค Hidas (rivi riviltรค) Erittรคin nopea Erittรคin nopea

Kรคytรค DELETE-komentoa, kun tarvitset suodattimen tai mahdollisuuden peruuttaa aiemmat muutokset. LASKUTUSTAULUKKO kun haluat tyhjentรครค taulukon nopeasti ja nollata sen AUTO_INCREMENT-laskurin. Kรคytรค DROP-kรคskyรค vain, kun itse taulukkoa ei enรครค tarvita, koska se poistaa mรครคritelmรคn datan mukana.

UKK

Vain avoimen transaktion sisรคllรค. Suorita START TRANSACTION, suorita DELETE ja kumoa se sitten ROLLBACK-komennolla. COMMIT-komennon jรคlkeen tai automaattisen vahvistuksen ollessa kรคytรถssรค rivit ovat poissa ja vain varmuuskopio voi palauttaa ne.

Kรคytรค usean taulukon DELETE-komentoa, jossa on LIITY, nimeรคmรคllรค molemmat taulukot ennen FROM-avainsanaa. Vaihtoehtoisesti voit mรครคrittรครค viiteavaimen ON DELETE CASCADE -komennolla, jolloin alisรคtaulukon rivit poistetaan automaattisesti, kun pรครคrivi poistetaan.

Vikasietopรคivitystila on oletuksena kรคytรถssรค MySQL TyรถpรถytรคSe hylkรครค kaikki DELETE-kรคskyt, joiden WHERE-lauseke ei kรคytรค avainsaraketta, estรคen vahingossa tapahtuvat koko taulukon poistot. Poista se kรคytรถstรค kohdassa Muokkaa > Asetukset > SQL-editori.

Kyllรค. Tekoรคlyavustajat kรครคntรคvรคt selkokielisen pyynnรถn DELETE-syntaksiksi ja osaavat selittรครค WHERE-lausekkeen. Tarkista aina ensin luotu suodatin SELECT-lausetta vasten, koska tekoรคlymalli ei voi nรคhdรค reaaliaikaista dataasi.

Ei. Anna tekoรคlyn luonnostella lauseke, mutta suorita se ensin itse varmuuskopiossa tai valmisteluvaiheessa olevassa kopiossa. Puuttuva WHERE-lauseke poistaa kaikki rivit, eikรค mikรครคn tekoรคlytyรถkalu voi peruuttaa tรคtรค, kun tapahtuma on vahvistettu.

Tiivistรค tรคmรค viesti seuraavasti: