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.

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.
