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.

  • 🗑️ Dichiarazione principale: DELETE FROM `table_name` [WHERE condition] rimuove intere righe e restituisce il numero di righe eliminate.
  • ⚠️ Omesso DOVE: Omettendo la clausola WHERE, vengono eliminate tutte le righe della tabella, quindi è sempre necessario applicare un filtro prima dell'esecuzione.
  • 🎯 TargetRimozione: WHERE `movie_id` = 18 rimuove un record, mentre WHERE `movie_id` IN (20,21) ne rimuove diversi in un'unica istruzione.
  • 🔁 Azione irreversibile: I dati eliminati non possono essere recuperati senza un backup, pertanto eseguire un backup del database prima di eseguire il comando DELETE.
  • 📊 Ambito a livello di riga: DELETE elimina solo intere righe; per cancellare il valore di una singola colonna è necessario utilizzare UPDATE con NULL.
  • CANCELLA vs TRONCA vs RIMUOVI: DELETE filtra le righe, TRUNCATE svuota istantaneamente una tabella e DROP rimuove l'intera struttura della tabella.

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.

DOMANDE FREQUENTI

Solo all'interno di una transazione aperta. Eseguire START TRANSACTION, eseguire DELETE, quindi ROLLBACK per annullare. Dopo COMMIT o con autocommit abilitato, le righe vengono eliminate e solo un backup può ripristinarle.

Utilizzare un DELETE multi-tabella con un ISCRIVITI, specificando il nome di entrambe le tabelle prima della parola chiave FROM. In alternativa, è possibile definire la chiave esterna con ON DELETE CASCADE in modo che le righe figlie vengano rimosse automaticamente quando viene eliminata la riga padre.

La modalità di aggiornamento sicuro è abilitata per impostazione predefinita in MySQL banco di lavoroRifiuta qualsiasi DELETE la cui clausola WHERE non utilizzi una colonna chiave, impedendo la cancellazione accidentale dell'intera tabella. È possibile disattivarlo in Modifica > Preferenze > Editor SQL.

Sì. Gli assistenti IA traducono una richiesta in linguaggio naturale nella sintassi DELETE e possono spiegare la clausola WHERE. È sempre consigliabile confrontare il filtro generato con una query SELECT prima di utilizzarlo, poiché un modello IA non può visualizzare i dati in tempo reale.

No. Lascia che l'IA rediga l'istruzione, ma eseguila prima tu stesso su una copia di backup o di staging. Una clausola WHERE mancante elimina tutte le righe e nessuno strumento di IA può annullare questa operazione una volta che la transazione è stata confermata.

Riassumi questo post con: