MySQL SLETT Spørring: Slik sletter du en rad fra tabellen
⚡ Smart oppsummering
MySQL DELETE-spørringen fjerner rader som ikke lenger er nødvendige fra en tabell og returnerer antall berørte rader. Denne ressursen forklarer DELETE-syntaks, WHERE-filtrering, sletting av flere rader med IN og de tryggere alternativene TRUNCATE og DROP.

Hva er SLETT-forespørselen?
Ocuco MySQL SLETT En DELETE-setning brukes til å fjerne rader som ikke lenger er nødvendige fra en databasetabell. Den sletter hele raden fra tabellen og returnerer antallet slettede rader. DELETE-setningen er nyttig når du trenger å slette midlertidige eller foreldede data fra databasen.
DELETE-spørringen i MySQL kan fjerne mer enn én rad fra en tabell i én utførelse. Dette viser seg å være fordelaktig når du fjerner et stort antall rader fra en databasetabell.
Når en rad er slettet, kan den ikke gjenopprettes. Ta alltid en sikkerhetskopi av databasen før du sletter data, slik at databasen kan gjenopprettes og gjennomgås senere om nødvendig.
Slik sletter du en rad i MySQL
Når formålet med setningen er klart, er neste trinn syntaksen. For å slette en rad i MySQL, brukes DELETE FROM-setningen:
DELETE FROM `table_name` [WHERE condition];
HER:
- SLETT FRA `tabellnavn` forteller MySQL serveren for å fjerne rader fra den navngitte tabellen.
- [WHERE-tilstand] er valgfritt og brukes til å bruke et filter som begrenser antall rader som påvirkes av DELETE-spørringen.
Dersom HVOR klausul brukes ikke i MySQL DELETE-spørringen, deretter alle Radene i en gitt tabell vil bli slettet.
⚠️ Advarsel: Kjør filteret som en SELECT først. Hvis det returnerer nøyaktig de radene du har tenkt å fjerne, er den samsvarende DELETE trygg. Fullstendig syntaks er dokumentert i MySQL SLETT-utdragsmanual.
Eksempel MySQL Slett spørring
Den neste delen bygger et lite datasett og sletter deretter fra det.
Trinn 1: Sett inn eksempeldata
Før vi går inn på en mer detaljert diskusjon om SQL DELETE-setningen, la oss sette inn noen eksempeldata i filmtabellen for å jobbe med dem.
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);
Ved å kjøre skriptet ovenfor legges tre (3) filmer til i filmtabellen. Før vi går videre, la oss liste opp alle filmene i tabellen vår.
SELECT * FROM `movies`;
Å kjøre skriptet ovenfor gir oss følgende resultater. De tre nylig innsatte radene er uthevet.
| movie_id | tittel | direktør | år_utgitt | kategori_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Glemte Sarah Marshal | Nicholas barnevogn | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Navn Svart | Edgar Jimz | 2010 | NULL |
| 5 | Pappas småjenter | NULL | 2007 | 8 |
| 6 | engler og demoner | NULL | 2007 | 6 |
| 7 | Da Vinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schultz | 2005 | 8 |
| 16 | 67 % skyldig | NULL | 2012 | NULL |
| 18 | The Great Dictator | Charlie Chaplin | 1940 | 7 |
| 19 | eksempelfilm | Anonym | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
Trinn 2: Slett en enkelt rad
Anta at videobiblioteket på Myflix ikke lenger ønsker å leie ut «Diktatoren» og ønsker at den skal fjernes fra databasen. Film-ID-en er 18, så skriptet nedenfor sletter den raden.
DELETE FROM `movies` WHERE `movie_id` = 18;
Utfører skriptet ovenfor i MySQL arbeidsbenk mot Myflix-databasen sletter filmen med ID 18 fra tabellen.
La oss nå sjekke den nåværende statusen til filmtabellen.
SELECT * FROM `movies`;
| movie_id | tittel | direktør | år_utgitt | kategori_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Glemte Sarah Marshal | Nicholas barnevogn | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Navn Svart | Edgar Jimz | 2010 | NULL |
| 5 | Pappas småjenter | NULL | 2007 | 8 |
| 6 | engler og demoner | NULL | 2007 | 6 |
| 7 | Da Vinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schultz | 2005 | 8 |
| 16 | 67 % skyldig | NULL | 2012 | NULL |
| 19 | eksempelfilm | Anonym | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
NOTAT:
- Filmen med ID 18 returneres ikke lenger i spørreresultatsettet.
- Du kan ikke slette en enkelt kolonne fra en tabell med DELETE. Setningen fjerner en hel rad. For å tømme ett felt, bruk en OPPDATERING-spørring som setter kolonnen til NULL.
Trinn 3: Slett flere rader med IN
La oss si at vi har en liste over filmer vi vil slette. I stedet for å kjøre én setning per rad, kan vi kombinere WHERE-klausulen med IN-operatoren.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Hvis du kjører skriptet ovenfor, slettes filmene med ID-ene 20 og 21 fra filmtabellen vår i én omgang.
SLETT vs. AVKORTI vs. SLIP IN MySQL
SLETT er ikke den eneste måten å fjerne data fra MySQLNybegynnere bruker den ofte når en raskere kommando passer bedre, så tabellen nedenfor sammenligner de tre fjerningskommandoene.
| Trekk | SLETT | TRUNKER | DROP |
|---|---|---|---|
| Kommando type | DML | DDL | DDL |
| HVOR klausul | Støttes | Støttes ikke | Støttes ikke |
| Hva som er fjernet | Valgte rader | Alle rader | Rader og tabellstruktur |
| Rollback | Mulig innenfor en transaksjon | Ikke mulig (implisitt commit) | Ikke mulig (implisitt commit) |
| AUTO_INCREMENT | Telleren beholdes | Telleren tilbakestilles til startverdien | Disken fjernes sammen med bordet |
| Hastighet på store bord | Sakte (rad for rad) | Veldig rask | Veldig rask |
Bruk DELETE når du trenger et filter eller muligheten til å rulle tilbake. TRUNCATE TABELL når du vil tømme en tabell raskt og nullstille AUTO_INCREMENT-telleren. Bruk DROP bare når selve tabellen ikke lenger er nødvendig, fordi den fjerner definisjonen sammen med dataene.
