MySQL DELETE Fråga: Hur man tar bort en rad från tabell
⚡ Smart sammanfattning
MySQL DELETE-frågan tar bort rader som inte längre behövs från en tabell och returnerar antalet berörda rader. Den här resursen förklarar DELETE-syntax, WHERE-filtrering, borttagning av flera rader med IN och de säkrare alternativen TRUNCATE och DROP.

Vad är DELETE-frågan?
Ocuco-landskapet MySQL RADERA En DELETE-sats används för att ta bort rader som inte längre behövs från en databastabell. Den tar bort hela raden från tabellen och returnerar antalet borttagna rader. DELETE-satsen är praktisk när du behöver rensa tillfälliga eller föråldrade data från din databas.
DELETE-frågan i MySQL kan ta bort mer än en rad från en tabell i en enda körning. Detta visar sig vara fördelaktigt när du tar bort ett stort antal rader från en databastabell.
När en rad har tagits bort kan den inte återställas. Gör alltid en säkerhetskopia av databasen innan du tar bort data, så att databasen kan återställas och granskas senare om det behövs.
Hur man tar bort en rad i MySQL
Med syftet med satsen tydligt är nästa steg syntaxen. För att ta bort en rad i MySQL, används DELETE FROM-satsen:
DELETE FROM `table_name` [WHERE condition];
HÄR:
- TA BORT FRÅN `tabellnamn` berättar MySQL servern för att ta bort rader från den namngivna tabellen.
- [WHERE-tillstånd] är valfritt och används för att tillämpa ett filter som begränsar antalet rader som påverkas av DELETE-frågan.
Om VAR klausul används inte i MySQL DELETE-frågan, sedan Alla Produkter Raderna i en given tabell kommer att raderas.
⚠️ Varning: Kör filtret som en SELECT först. Om det returnerar exakt de rader du vill ta bort, är matchande DELETE säker. Fullständig syntax finns dokumenterad i MySQL DELETE-utdragsmanual.
Exempel på MySQL Ta bort fråga
Nästa avsnitt bygger en liten datamängd och tar sedan bort data från den.
Steg 1: Infoga exempeldata
Innan vi går in på en mer detaljerad diskussion om SQL DELETE-satsen, låt oss infoga lite exempeldata i filmtabellen att arbeta med.
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);
Genom att köra ovanstående skript läggs tre (3) filmer till i filmtabellen. Innan vi går vidare, låt oss lista alla filmer i vår tabell.
SELECT * FROM `movies`;
Om vi kör ovanstående skript får vi följande resultat. De tre nyligen infogade raderna är markerade.
| movie_id | rubricerade | direktör | year_released | kategori_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Att glömma Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 3 | X-Män | NULL | 2008 | NULL |
| 4 | Code Namn Svart | Edgar Jimz | 2010 | NULL |
| 5 | Pappas små flickor | NULL | 2007 | 8 |
| 6 | Änglar och demoner | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schultz | 2005 | 8 |
| 16 | 67 % skyldig | NULL | 2012 | NULL |
| 18 | Diktatorn | Charlie Chaplin | 1940 | 7 |
| 19 | exempelfilm | Anonym | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
Steg 2: Ta bort en enda rad
Anta att Myflix videobibliotek inte längre vill hyra ut "Diktatorn" och vill att den ska tas bort från databasen. Dess film-ID är 18, så skriptet nedan tar bort den raden.
DELETE FROM `movies` WHERE `movie_id` = 18;
Exekvera skriptet ovan i MySQL Arbetsbänk mot Myflix-databasen raderar filmen med id 18 från tabellen.
Låt oss nu kontrollera filmtabellens aktuella tillstånd.
SELECT * FROM `movies`;
| movie_id | rubricerade | direktör | year_released | kategori_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Att glömma Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 3 | X-Män | NULL | 2008 | NULL |
| 4 | Code Namn Svart | Edgar Jimz | 2010 | NULL |
| 5 | Pappas små flickor | NULL | 2007 | 8 |
| 6 | Änglar och demoner | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schultz | 2005 | 8 |
| 16 | 67 % skyldig | NULL | 2012 | NULL |
| 19 | exempelfilm | Anonym | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
OBS:
- Filmen med id 18 returneras inte längre i frågeresultatet.
- Du kan inte ta bort en enskild kolumn från en tabell med DELETE. Satsen tar bort en hel rad. För att rensa ett fält, använd en UPDATE-fråga som sätter kolumnen till NULL.
Steg 3: Ta bort flera rader med IN
Låt oss säga att vi har en lista med filmer som vi vill ta bort. Istället för att köra en sats per rad kan vi kombinera WHERE-satsen med IN-operatorn.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Genom att köra ovanstående skript raderas filmerna med ID:na 20 och 21 från vår filmtabell i ett svep.
TA BORT vs AVKRYP vs SLÄPP in MySQL
TA BORT är inte det enda sättet att ta bort data från MySQLNybörjare använder det ofta när ett snabbare kommando passar bättre, så tabellen nedan jämför de tre borttagningskommandona.
| Leverans | RADERA | STYMPA | FALLA |
|---|---|---|---|
| Kommandotyp | DML | DDL | DDL |
| VAR klausul | Som stöds | Stöds inte | Stöds inte |
| Vad som tas bort | Valda rader | Alla rader | Rader och tabellstruktur |
| rollback | Möjligt inom en transaktion | Inte möjligt (implicit commit) | Inte möjligt (implicit commit) |
| AUTO_INCREMENT | Räknaren behålls | Räknaren återställs till startvärdet | Disken tas bort tillsammans med bordet |
| Hastighet på stora bord | Långsamt (rad för rad) | Mycket snabb | Mycket snabb |
Använd DELETE när du behöver ett filter eller möjligheten att återställa. TRUNCATE BORD när du vill tömma en tabell snabbt och återställa dess AUTO_INCREMENT-räknare. Använd DROP endast när själva tabellen inte längre behövs, eftersom definitionen tillsammans med data tas bort.
