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.

  • 🗑️ Kjerneerklæring: DELETE FROM `tabellnavn` [HVOR-betingelse] fjerner hele rader og returnerer antallet rader som er slettet.
  • ⚠️ Utelatt HVOR: Hvis du utelater WHERE-klausulen, slettes alle rader i tabellen, så filtrer alltid før du kjører.
  • 🎯 Targetfjerning: WHERE `movie_id` = 18 fjerner én post, mens WHERE `movie_id` IN (20,21) fjerner flere i én setning.
  • 🔁 Irreversibel handling: Slettede data kan ikke gjenopprettes uten sikkerhetskopi, derfor bør du sikkerhetskopiere databasen før du kjører DELETE.
  • 📊 Omfang på radnivå: DELETE fjerner bare hele rader; sletting av en enkelt kolonneverdi krever UPDATE med NULL.
  • 🇧🇷 SLETT vs. AVKORTI vs. SLIP: DELETE filtrerer rader, TRUNCATE tømmer en tabell umiddelbart, og DROP fjerner selve tabellstrukturen.

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.

Spørsmål og svar

Bare innenfor en åpen transaksjon. Kjør START TRANSACTION, utfør DELETE, og deretter ROLLBACK for å angre. Etter COMMIT eller med autocommit aktivert, er radene borte, og bare en sikkerhetskopi kan gjenopprette dem.

Bruk en DELETE for flere tabeller med en BLI, og navngi begge tabellene før FROM-nøkkelordet. Alternativt kan du definere fremmednøkkelen med ON DELETE CASCADE slik at underordnede rader fjernes automatisk når den overordnede raden slettes.

Sikker oppdateringsmodus er aktivert som standard i MySQL WorkbenchDen avviser alle DELETE-klausuler der WHERE-klausulen ikke bruker en nøkkelkolonne, noe som forhindrer utilsiktet sletting av hele tabellen. Deaktiver den under Rediger > Innstillinger > SQL-redigeringsprogram.

Ja. AI-assistenter oversetter en forespørsel på vanlig engelsk til DELETE-syntaks og kan forklare WHERE-klausulen. Sjekk alltid det genererte filteret mot en SELECT først, fordi en AI-modell ikke kan se dine livedata.

Nei. La AI utarbeide setningen, men utfør den selv på en sikkerhetskopi eller en midlertidig kopi først. En manglende WHERE-klausul sletter hver rad, og ingen AI-verktøy kan reversere det når transaksjonen er fullført.

Oppsummer dette innlegget med: