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.

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.
