MySQL Query DELETE: come eliminare una riga dalla tabella
⚡ Riepilogo intelligente
MySQL La query DELETE rimuove le righe non più necessarie da una tabella e restituisce il numero di righe interessate. Questa risorsa spiega la sintassi di DELETE, il filtro WHERE, l'eliminazione di più righe con IN e le alternative più sicure TRUNCATE e DROP.
Cos'è la query DELETE?
Migliori MySQL DELETE L'istruzione DELETE viene utilizzata per rimuovere le righe non più necessarie da una tabella di database. Elimina l'intera riga dalla tabella e restituisce il numero di righe eliminate. L'istruzione DELETE è utile quando è necessario eliminare dati temporanei o obsoleti dal database.
La query DELETE in MySQL È possibile rimuovere più di una riga da una tabella in una singola esecuzione. Ciò si rivela vantaggioso quando si devono rimuovere un gran numero di righe da una tabella di database.
Una volta eliminata una riga, non è possibile recuperarla. Eseguire sempre un backup del database prima di eliminare i dati, in modo da poterlo ripristinare e analizzare in seguito, se necessario.
Come eliminare una riga in MySQL
Una volta chiarito lo scopo dell'affermazione, il passo successivo è la sintassi. Per eliminare una riga in MySQL, viene utilizzata l'istruzione DELETE FROM:
DELETE FROM `table_name` [WHERE condition];
QUI:
- DELETE FROM `table_name` dice il MySQL server per rimuovere le righe dalla tabella specificata.
- [Condizione DOVE] è facoltativo e viene utilizzato per applicare un filtro che limita il numero di righe interessate dalla query DELETE.
Se l' Dove la clausola non è utilizzato in MySQL ELIMINA la query, quindi contro tutti i Le righe di una determinata tabella verranno eliminate.
⚠️ Attenzione: Eseguire prima il filtro come SELECT. Se restituisce esattamente le righe che si intende rimuovere, la DELETE corrispondente è sicura. La sintassi completa è documentata nel MySQL Manuale dell'istruzione DELETE.
Esempio di MySQL Elimina domanda
La sezione successiva crea un piccolo set di dati e poi elimina i dati da esso.
Passaggio 1: Inserire i dati di esempio
Prima di addentrarci in una discussione più dettagliata sull'istruzione SQL DELETE, inseriamo alcuni dati di esempio nella tabella movies per poterli utilizzare come riferimento.
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);
L'esecuzione dello script sopra riportato aggiunge tre (3) film alla tabella dei film. Prima di procedere, elenchiamo tutti i film presenti nella nostra tabella.
SELECT * FROM `movies`;
L'esecuzione dello script sopra riportato produce i seguenti risultati. Le tre righe appena inserite sono evidenziate.
| id_film | titolo | direttore | anno_rilasciato | categoria_id |
|---|---|---|---|---|
| 1 | Pirati dei Caraibi 4 | Rob Marshall | 2011 | 1 |
| 2 | Dimenticando Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Nome Nero | Edgar Jimz | 2010 | NULL |
| 5 | Le bambine di papà | NULL | 2007 | 8 |
| 6 | Angeli e Demoni | NULL | 2007 | 6 |
| 7 | Da Vinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schutz | 2005 | 8 |
| 16 | 67% colpevole | NULL | 2012 | NULL |
| 18 | Il grande dittatore | Charlie Chaplin | 1940 | 7 |
| 19 | filmato di esempio | Anonimo | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
Passaggio 2: Eliminare una singola riga
Supponiamo che la videoteca di Myflix non voglia più noleggiare "Il grande dittatore" e desideri rimuoverlo dal database. Il suo ID film è 18, quindi lo script seguente elimina la riga corrispondente.
DELETE FROM `movies` WHERE `movie_id` = 18;
Eseguendo lo script precedente in MySQL Banco di lavoro sul database di Myflix elimina il film con ID 18 dalla tabella.
Verifichiamo ora lo stato attuale della tabella dei film.
SELECT * FROM `movies`;
| id_film | titolo | direttore | anno_rilasciato | categoria_id |
|---|---|---|---|---|
| 1 | Pirati dei Caraibi 4 | Rob Marshall | 2011 | 1 |
| 2 | Dimenticando Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Nome Nero | Edgar Jimz | 2010 | NULL |
| 5 | Le bambine di papà | NULL | 2007 | 8 |
| 6 | Angeli e Demoni | NULL | 2007 | 6 |
| 7 | Da Vinci Code | NULL | 2007 | 6 |
| 9 | Honey moonERS | John Schutz | 2005 | 8 |
| 16 | 67% colpevole | NULL | 2012 | NULL |
| 19 | filmato di esempio | Anonimo | NULL | 8 |
| 20 | film 3 | John Brown | 1920 | 8 |
NOTA:
- Il film con ID 18 non viene più restituito nel set di risultati della query.
- Non è possibile eliminare una singola colonna da una tabella con DELETE. L'istruzione rimuove un'intera riga. Per cancellare un campo, utilizzare un Query di AGGIORNAMENTO che imposta la colonna su NULL.
Passaggio 3: Elimina più righe con IN
Supponiamo di avere un elenco di film che vogliamo eliminare. Invece di eseguire un'istruzione per ogni riga, possiamo combinare la clausola WHERE con l'operatore IN.
DELETE FROM `movies` WHERE `movie_id` IN (20,21);
L'esecuzione dello script sopra riportato elimina in un'unica operazione i film con ID 20 e 21 dalla nostra tabella dei film.
CANCELLA vs TRONCA vs RILASCIA MySQL
CANCELLA non è l'unico modo per rimuovere i dati da MySQLI principianti spesso lo usano quando un comando più veloce sarebbe più appropriato, quindi la tabella seguente confronta i tre comandi di rimozione.
| Caratteristica | DELETE | TRONCARE | GOCCIA |
|---|---|---|---|
| Tipo di comando | DML | DDL | DDL |
| Dove la clausola | Supporto | Non supportato | Non supportato |
| Cosa viene rimosso? | Righe selezionate | Tutte le righe | Struttura delle righe e della tabella |
| Rollback | Possibile all'interno di una transazione | Impossibile (commit implicito) | Impossibile (commit implicito) |
| INCREMENTO AUTOMATICO | Il contatore viene mantenuto | Il contatore si azzera al valore iniziale | Il bancone viene rimosso insieme al tavolo. |
| Velocità su grandi tavoli | Lentamente (riga per riga) | Molto veloce | Molto veloce |
Usa CANCELLA quando hai bisogno di un filtro o della possibilità di annullare le modifiche. TABELLA DEI TRONCATI Quando si desidera svuotare rapidamente una tabella e reimpostare il suo contatore AUTO_INCREMENT, utilizzare DROP solo quando la tabella stessa non è più necessaria, poiché rimuove la definizione insieme ai dati.

