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.
