MySQL Interogarea DELETE: Cum se șterge un rând din tabel

⚡ Rezumat inteligent

MySQL Interogarea DELETE elimină rândurile care nu mai sunt necesare dintr-un tabel și returnează numărul de rânduri afectate. Această resursă explică sintaxa DELETE, filtrarea WHERE, ștergerea mai multor rânduri cu IN și alternativele mai sigure TRUNCATE și DROP.

  • 🗑️ Declarație de bază: DELETE FROM `nume_tabel` [condiție WHERE] elimină rânduri întregi și returnează numărul de rânduri șterse.
  • ⚠️ Omis UNDE: Omiterea clauzei WHERE șterge fiecare rând din tabel, așa că întotdeauna filtrați înainte de execuție.
  • 🎯 TargetÎndepărtare ed: WHERE `movie_id` = 18 elimină o înregistrare, în timp ce WHERE `movie_id` IN (20,21) elimină mai multe într-o singură instrucțiune.
  • 🔁 Acțiune ireversibilă: Datele șterse nu pot fi recuperate fără o copie de rezervă, prin urmare, faceți o copie de rezervă a bazei de date înainte de a executa comanda DELETE.
  • 📊 Domeniu de aplicare la nivel de rând: DELETE șterge doar rânduri întregi; ștergerea valorii unei singure coloane necesită UPDATE cu NULL.
  • 🇧🇷 ȘTERGERE vs. TRUNCARE vs. REDUCERE: DELETE filtrează rândurile, TRUNCATE golește instantaneu un tabel, iar DROP elimină structura tabelului în sine.

Ce este interogarea DELETE?

MySQL DELETE Instrucțiunea DELETE este utilizată pentru a elimina rândurile care nu mai sunt necesare dintr-un tabel al bazei de date. Șterge întregul rând din tabel și returnează numărul de rânduri șterse. Instrucțiunea DELETE este utilă atunci când trebuie să ștergeți date temporare sau învechite din baza de date.

Interogarea DELETE din MySQL poate elimina mai mult de un rând dintr-un tabel într-o singură execuție. Acest lucru se dovedește avantajos atunci când eliminați un număr mare de rânduri dintr-un tabel al bazei de date.

Odată ce un rând a fost șters, acesta nu mai poate fi recuperat. Faceți întotdeauna o copie de rezervă a bazei de date înainte de a șterge datele, astfel încât baza de date să poată fi restaurată și revizuită ulterior, dacă este necesar.

Cum se șterge un rând în MySQL

Odată ce scopul instrucțiunii este clar, următorul pas este sintaxa. Pentru a șterge un rând din MySQL, se folosește instrucțiunea DELETE FROM:

DELETE FROM `table_name` [WHERE condition];

AICI:

  • ȘTERGERE DIN `nume_tabel` spune MySQL server pentru a elimina rânduri din tabelul numit.
  • [condiția UNDE] este opțională și se utilizează pentru a aplica un filtru care restricționează numărul de rânduri afectate de interogarea DELETE.

În cazul în care clauza WHERE nu este folosit în MySQL interogarea DELETE, apoi toate Rândurile dintr-un tabel dat vor fi șterse.

⚠️ Atenție: Executați filtrul mai întâi ca o comandă SELECT. Dacă returnează exact rândurile pe care doriți să le eliminați, comanda DELETE corespondentă este sigură. Sintaxa completă este documentată în MySQL Manualul instrucțiunilor DELETE.

Exemplu de MySQL Ștergeți interogarea

Următoarea secțiune construiește un mic set de date și apoi șterge din acesta.

Pasul 1: Introduceți date eșantion

Înainte de a intra într-o discuție mai detaliată despre instrucțiunea SQL DELETE, să inserăm câteva date exemplu în tabelul filme pentru a lucra cu ele.

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);

Executarea scriptului de mai sus adaugă trei (3) filme în tabelul de filme. Înainte de a continua, haideți să listăm toate filmele din tabelul nostru.

SELECT * FROM `movies`;

Executarea scriptului de mai sus ne dă următoarele rezultate. Cele trei rânduri nou inserate sunt evidențiate.

movie_id titlu director year_released categorie_id
1 Piratii din Caraibe 4 Rob Marshall 2011 1
2 Uitând-o pe Sarah Marshal Nicolae Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Nume Black Edgar Jimz 2010 NULL
5 Fetițele lui Tati NULL 2007 8
6 ingeri si Demoni NULL 2007 6
7 Da Vinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% vinovat NULL 2012 NULL
18 The Great Dictator Charlie Chaplin 1940 7
19 film exemplu Anonim NULL 8
20 filmul 3 John Brown 1920 8

Pasul 2: Ștergeți un singur rând

Să presupunem că biblioteca video Myflix nu mai dorește să închirieze filmul „Marele Dictator” și dorește ca acesta să fie eliminat din baza de date. ID-ul filmului său este 18, așa că scriptul de mai jos șterge acel rând.

DELETE FROM `movies` WHERE `movie_id` = 18;

Executarea scriptului de mai sus în MySQL Banc de lucru împotriva bazei de date Myflix șterge filmul cu ID-ul 18 din tabel.

Să verificăm acum starea actuală a tabelului cu filme.

SELECT * FROM `movies`;
movie_id titlu director year_released categorie_id
1 Piratii din Caraibe 4 Rob Marshall 2011 1
2 Uitând-o pe Sarah Marshal Nicolae Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Nume Black Edgar Jimz 2010 NULL
5 Fetițele lui Tati NULL 2007 8
6 ingeri si Demoni NULL 2007 6
7 Da Vinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8
16 67% vinovat NULL 2012 NULL
19 film exemplu Anonim NULL 8
20 filmul 3 John Brown 1920 8

NOTĂ:

  • Filmul cu ID-ul 18 nu mai este returnat în setul de rezultate al interogării.
  • Nu puteți șterge o singură coloană dintr-un tabel cu DELETE. Instrucțiunea elimină un rând întreg. Pentru a șterge un câmp, utilizați o Interogare UPDATE care setează coloana la NULL.

Pasul 3: Ștergeți mai multe rânduri cu IN

Să presupunem că avem o listă de filme pe care dorim să le ștergem. În loc să rulăm o singură instrucțiune pe rând, putem combina clauza WHERE cu operatorul IN.

DELETE FROM `movies` WHERE `movie_id` IN (20,21);

Executarea scriptului de mai sus șterge filmele cu ID-urile 20 și 21 din tabelul nostru de filme într-o singură trecere.

ȘTERGERE vs. TRUNCARE vs. PLĂCERE MySQL

ȘTERGEREA nu este singura modalitate de a elimina date din MySQLÎncepătorii o folosesc adesea atunci când o comandă mai rapidă s-ar potrivi mai bine, așa că tabelul de mai jos compară cele trei comenzi de eliminare.

Caracteristică DELETE TRUNCHIA CĂDERE BRUSCA
Tipul comenzii DML DDL DDL
clauza WHERE Suportat Nu este suportat Nu este suportat
Ce este eliminat Rânduri selectate Toate rândurile Rânduri și structura tabelului
Rollback Posibil în cadrul unei tranzacții Nu este posibil (commit implicit) Nu este posibil (commit implicit)
INCREMENT AUTO Contorul este păstrat Contorul se resetează la valoarea inițială Tejgheaua este îndepărtată odată cu masa
Viteză pe mese mari Lent (rând cu rând) Foarte rapid Foarte rapid

Folosește DELETE când ai nevoie de un filtru sau de posibilitatea de a reveni la versiunea anterioară. Folosește TABULA TRONCIARĂ când doriți să goliți rapid un tabel și să resetați contorul său AUTO_INCREMENT. Folosiți DROP numai atunci când tabelul în sine nu mai este necesar, deoarece elimină definiția împreună cu datele.

Întrebări frecvente

Numai în interiorul unei tranzacții deschise. Executați START TRANSACTION, executați DELETE, apoi ROLLBACK pentru a anula operațiunea. După COMMIT sau cu autocommit-ul activat, rândurile dispar și doar o copie de rezervă le poate restaura.

Folosește o DELETE multi-tabelă cu un JOIN, denumind ambele tabele înainte de cuvântul cheie FROM. Alternativ, definiți cheia externă cu ON DELETE CASCADE astfel încât rândurile secundare să fie eliminate automat atunci când rândul părinte este șters.

Modul Actualizare sigură este activat în mod implicit în MySQL Banc de lucruRespinge orice instrucțiune DELETE a cărei clauză WHERE nu utilizează o coloană cheie, prevenind ștergerea accidentală a întregului tabel. Dezactivați-o în Editare > Preferințe > Editor SQL.

Da. Asistenții AI traduc o solicitare din limba engleză simplă în sintaxa DELETE și pot explica clauza WHERE. Verificați întotdeauna mai întâi filtrul generat în raport cu un SELECT, deoarece un model AI nu poate vedea datele dvs. live.

Nu. Lasă inteligența artificială să redacteze instrucțiunea, dar execut-o singur mai întâi pe o copie de rezervă sau de testare. O clauză WHERE lipsă șterge fiecare rând și niciun instrument de inteligență artificială nu poate inversa acest lucru odată ce tranzacția este validată.

Rezumați această postare cu: