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.

  • ๐Ÿ—‘๏ธ Kernverklaring: DELETE FROM `table_name` [WHERE condition] verwijdert volledige rijen en retourneert het aantal verwijderde rijen.
  • โš ๏ธ Weggelaten WAAR: Als je de WHERE-clausule weglaat, worden alle rijen in de tabel verwijderd. Filter daarom altijd voordat je de query uitvoert.
  • ๐ŸŽฏ Targeted Verwijdering: WHERE `movie_id` = 18 verwijdert รฉรฉn record, terwijl WHERE `movie_id` IN (20,21) er meerdere in รฉรฉn statement verwijdert.
  • ๐Ÿ” Onomkeerbare actie: Verwijderde gegevens kunnen niet worden hersteld zonder een back-up. Maak daarom een โ€‹โ€‹back-up van de database voordat u de DELETE-functie uitvoert.
  • ๐Ÿ“Š Bereik op rijniveau: DELETE verwijdert alleen complete rijen; voor het wissen van een enkele kolomwaarde is UPDATE met NULL vereist.
  • โ€‹ DELETE vs TRUNCATE vs DROP: DELETE filtert rijen, TRUNCATE maakt een tabel direct leeg en DROP verwijdert de hele tabelstructuur.

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.

Veelgestelde vragen

Alleen binnen een open transactie. Voer START TRANSACTION uit, voer de DELETE-bewerking uit en gebruik vervolgens ROLLBACK om deze ongedaan te maken. Na COMMIT of met ingeschakelde autocommit zijn de rijen verdwenen en kunnen ze alleen worden hersteld met een back-up.

Gebruik een DELETE-opdracht voor meerdere tabellen met een AANMELDENwaarbij beide tabellen vรณรณr het trefwoord FROM worden benoemd. Als alternatief kunt u de externe sleutel definiรซren met ON DELETE CASCADE, zodat onderliggende rijen automatisch worden verwijderd wanneer de bovenliggende rij wordt verwijderd.

De veilige updatemodus is standaard ingeschakeld in MySQL WerkbankHet weigert elke DELETE-bewerking waarvan de WHERE-clausule geen sleutelkolom gebruikt, waardoor onbedoelde volledige tabelverwijderingen worden voorkomen. Schakel deze functie uit via Bewerken > Voorkeuren > SQL-editor.

Ja. AI-assistenten vertalen een verzoek in gewoon Engels naar DELETE-syntaxis en kunnen de WHERE-clausule uitleggen. Controleer het gegenereerde filter altijd eerst met een SELECT-query, omdat een AI-model uw live gegevens niet kan zien.

Nee. Laat AI de instructie opstellen, maar voer deze eerst zelf uit op een back-up of testkopie. Een ontbrekende WHERE-clausule verwijdert elke rij, en geen enkele AI-tool kan dat terugdraaien zodra de transactie is vastgelegd.

Vat dit bericht samen met: