MySQL DELETE-query: een rij uit een tabel verwijderen
โก Slimme samenvatting
MySQL De DELETE-query verwijdert rijen uit een tabel die niet langer nodig zijn en geeft het aantal verwijderde rijen weer. Deze handleiding legt de syntaxis van DELETE uit, evenals filteren met WHERE, het verwijderen van meerdere rijen met IN en de veiligere alternatieven TRUNCATE en DROP.

Wat is de DELETE-query?
De MySQL VERWIJDEREN De DELETE-instructie wordt gebruikt om rijen die niet langer nodig zijn uit een databasetabel te verwijderen. De instructie verwijdert de volledige rij uit de tabel en geeft het aantal verwijderde rijen terug. De DELETE-instructie is handig wanneer u tijdelijke of verouderde gegevens uit uw database wilt verwijderen.
De DELETE-query in MySQL Het is mogelijk om in รฉรฉn keer meerdere rijen uit een tabel te verwijderen. Dit is handig wanneer u grote aantallen rijen uit een databasetabel verwijdert.
Eenmaal verwijderd, kan een rij niet meer worden hersteld. Maak daarom altijd een back-up van de database voordat u gegevens verwijdert, zodat de database later indien nodig kan worden hersteld en gecontroleerd.
Hoe verwijder ik een rij in MySQL
Nu het doel van de verklaring duidelijk is, is de volgende stap de syntaxis. Om een โโrij te verwijderen in MySQL, wordt de DELETE FROM-instructie gebruikt:
DELETE FROM `table_name` [WHERE condition];
HIER:
- VERWIJDEREN UIT `table_name` vertelt het MySQL De server moet rijen uit de genoemde tabel verwijderen.
- [WHERE-voorwaarde] is optioneel en wordt gebruikt om een โโfilter toe te passen dat het aantal rijen beperkt dat door de DELETE-query wordt beรฏnvloed.
Indien de WHERE-clausule wordt niet gebruikt in de MySQL DELETE query, vervolgens allen De rijen in een bepaalde tabel worden verwijderd.
โ ๏ธ Waarschuwing: Voer het filter eerst uit als een SELECT-query. Als deze precies de rijen retourneert die u wilt verwijderen, is de bijbehorende DELETE-query veilig. De volledige syntaxis is gedocumenteerd in de documentatie. MySQL DELETE-instructiehandleiding.
Voorbeeld MySQL Vraag verwijderen
In het volgende gedeelte wordt een kleine dataset opgebouwd en vervolgens worden er gegevens uit verwijderd.
Stap 1: Voer voorbeeldgegevens in
Voordat we dieper ingaan op de SQL DELETE-instructie, laten we eerst wat voorbeeldgegevens in de tabel 'movies' invoegen om mee te werken.
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);
Door het bovenstaande script uit te voeren, worden drie (3) films aan de tabel met films toegevoegd. Laten we, voordat we verdergaan, alle films in onze tabel opsommen.
SELECT * FROM `movies`;
Het uitvoeren van bovenstaand script levert de volgende resultaten op. De drie nieuw ingevoegde rijen zijn gemarkeerd.
| film_id | titel | directeur | jaar_uitgebracht | categorie ID |
|---|---|---|---|---|
| 1 | Piraten van het Caribisch gebied 4 | Rob Marshall | 2011 | 1 |
| 2 | Sarah Marshal vergeten | Nicholas Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Naam Zwart | Edgar Jimz | 2010 | NULL |
| 5 | Papa's kleine meisjes | NULL | 2007 | 8 |
| 6 | Engelen en duivels | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schulz | 2005 | 8 |
| 16 | 67% Schuldig | NULL | 2012 | NULL |
| 18 | The Great Dictator | Charlie Chaplin | 1940 | 7 |
| 19 | voorbeeldfilm | Anoniem | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
Stap 2: Een enkele rij verwijderen
Stel dat de Myflix-videotheek de film "The Great Dictator" niet langer wil verhuren en deze uit de database wil verwijderen. De film-ID is 18, dus het onderstaande script verwijdert die rij.
DELETE FROM `movies` WHERE `movie_id` = 18;
Voer het bovenstaande script uit in MySQL Werkbank De query verwijdert de film met ID 18 uit de tabel in de Myflix-database.
Laten we nu de huidige status van de filmtabel bekijken.
SELECT * FROM `movies`;
| film_id | titel | directeur | jaar_uitgebracht | categorie ID |
|---|---|---|---|---|
| 1 | Piraten van het Caribisch gebied 4 | Rob Marshall | 2011 | 1 |
| 2 | Sarah Marshal vergeten | Nicholas Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Naam Zwart | Edgar Jimz | 2010 | NULL |
| 5 | Papa's kleine meisjes | NULL | 2007 | 8 |
| 6 | Engelen en duivels | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schulz | 2005 | 8 |
| 16 | 67% Schuldig | NULL | 2012 | NULL |
| 19 | voorbeeldfilm | Anoniem | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
NOTITIE:
- De film met ID 18 wordt niet langer weergegeven in de zoekresultaten.
- Je kunt met DELETE geen enkele kolom uit een tabel verwijderen. De instructie verwijdert een hele rij. Om รฉรฉn veld leeg te maken, gebruik je een UPDATE-query Dat stelt de kolom in op NULL.
Stap 3: Meerdere rijen verwijderen met IN
Stel, we hebben een lijst met films die we willen verwijderen. In plaats van voor elke rij een aparte query uit te voeren, kunnen we de WHERE-clausule combineren met de IN-operator.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
Door het bovenstaande script uit te voeren, worden de films met ID's 20 en 21 in รฉรฉn keer uit onze filmtabel verwijderd.
DELETE vs TRUNCATE vs DROP in MySQL
DELETE is niet de enige manier om gegevens te verwijderen. MySQLBeginners grijpen er vaak naar terwijl een sneller commando beter zou passen, daarom vergelijkt de onderstaande tabel de drie verwijderingscommando's.
| Kenmerk | VERWIJDEREN | AFKNOPEN | DROP |
|---|---|---|---|
| Type opdracht | DML | DDL | DDL |
| WHERE-clausule | ondersteunde | Niet ondersteund | Niet ondersteund |
| Wat wordt verwijderd? | Geselecteerde rijen | Alle rijen | Rijen en tabelstructuur |
| Rollback | Mogelijk binnen een transactie | Niet mogelijk (impliciete commit) | Niet mogelijk (impliciete commit) |
| AUTO_INCREMENT | De teller blijft behouden. | De teller wordt gereset naar de beginwaarde. | De toonbank wordt samen met de tafel verwijderd. |
| Snelheid op grote tafels | Langzaam (rij voor rij) | Zeer snel | Zeer snel |
Gebruik DELETE wanneer u een filter nodig hebt of de mogelijkheid om terug te keren. AFGEKNOPTE TABEL Wanneer je een tabel snel wilt leegmaken en de AUTO_INCREMENT-teller wilt resetten, gebruik je DROP. Gebruik DROP alleen wanneer de tabel zelf niet meer nodig is, omdat hiermee zowel de definitie als de gegevens worden verwijderd.
