Diferența dintre comanda DELETE și TRUNCATE este cea mai comună parte a unei întrebări de interviu. Ele sunt utilizate în principal pentru a șterge date din baza de date. Principala diferență dintre ele este că instrucțiunea de ștergere șterge datele fără a reseta identitatea unui tabel, în timp ce comanda truncate resetează identitatea unui anumit tabel. . Acest articol explică prezentarea completă a comenzii DELETE și TRUNCATE și diferențele dintre acestea, care sunt utilizate în primul rând interschimbabil, dar sunt total diferite.
Ce este o comandă DELETE?
Este un DML sau comanda de manipulare a datelor folosit pentru a șterge înregistrările dintr-un tabel care nu este necesar în baza de date. Îndepărtează rândul complet din tabel și produce numărul rândurilor șterse. Avem nevoie de permisiunea de ștergere pe tabelul țintă pentru a executa această comandă. De asemenea, ne permite să filtram și să ștergem orice înregistrări specifice folosind UNDE clauza din tabel.
Acesta clarifică faptul că avem o copie de rezervă a bazei de date înainte de a executa această comandă, deoarece nu putem recupera înregistrările șterse folosind această interogare. De aceea copii de siguranță ale bazei de date ne permit să restabilim datele ori de câte ori avem nevoie de ele în viitor.
Următoarea sintaxă explică comanda DELETE pentru a elimina datele din tabel:
DELETE FROM table_name WHERE condition;
Ce este o comandă TRUNCATE?
Declarația trunchiată este a Comandă DDL sau limbaj de definire a datelor folosit pentru a elimina datele complete din tabel fără a elimina structura tabelului. Nu putem folosi UNDE clauză cu această comandă, astfel încât filtrarea înregistrărilor nu este posibilă. După executarea acestei comenzi, noi nu poate derula datele șterse deoarece jurnalul nu este menținut în timpul efectuării acestei operațiuni.
Comanda truncate dezaocă fișierul pagini în loc de rânduri și face o intrare pentru paginile de dealocare în loc de rânduri în jurnalele de tranzacții. Această comandă blochează paginile în loc de rânduri; astfel, necesită mai puține încuietori și resurse. Rețineți că nu putem folosi instrucțiunea truncate atunci când un tabel este referit de o cheie străină sau participă la o vizualizare indexată.
cum fac upgrade la java
Următoarea sintaxă explică comanda TRUNCATE pentru a elimina datele din tabel:
TRUNCATE TABLE table_name;
Diferențele cheie dintre DELETE și TRUNCATE
Următoarele puncte explică diferențele dintre comanda de ștergere și trunchiere:
- Instrucțiunea DELETE este folosită atunci când dorim să ștergem unele sau toate înregistrările din tabel, în timp ce instrucțiunea TRUNCATE va șterge rânduri întregi dintr-un tabel.
- DELETE este o comandă DML, deoarece modifică doar datele din tabel, în timp ce TRUNCATE este o comandă DDL.
- Comanda DELETE poate filtra înregistrarea/tuplurile folosind clauza WHERE. Cu toate acestea, comanda TRUNCATE nu permite utilizarea UNDE clauză, deci nu putem filtra rândurile în timp ce trunchiem.
- DELETE activează toate ștergeți declanșatorii pe masă să tragă. Cu toate acestea, nu sunt declanșate declanșatoare pentru operația de trunchiere, deoarece nu funcționează pe rânduri individuale.
- DELETE efectuează ștergerea rând cu rând pe rând din tabel, în ordinea în care au fost procesate. Cu toate acestea, TRUNCATE operează pe pagini de date în loc de rânduri, deoarece a șters datele întregii din tabel odată.
- Declarația DELETE șterge doar înregistrările și nu resetează identitatea mesei , în timp ce TRUNCATE resetează identitatea unui anumit tabel.
- Comanda DELETE necesită mai multe blocări și resurse de bază de date, deoarece dobândește blocarea pe fiecare rând șters. În schimb, TRUNCATE dobândește blocarea pe pagina de date înainte de a șterge pagina de date; astfel, necesită mai puține încuietori și puține resurse.
- Declarația DELETE face o intrare în Jurnal de tranzacții pentru fiecare rând șters, în timp ce TRUNCATE înregistrează jurnalul de tranzacții pentru fiecare pagină de date.
- Comanda TRUNCATE este Mai repede decât comanda DELETE, deoarece dealocează paginile de date în loc de rânduri și înregistrează pagini de date în loc de rânduri în jurnalele de tranzacții.
- Odată ce înregistrarea este ștearsă folosind comanda TRUNCATE, nu o putem recupera înapoi. În schimb, putem recupera datele șterse înapoi pe care le-am eliminat din operațiunea DELETE.
DELETE vs. TRUNCATE Diagrama de comparație
Următorul grafic de comparație explică principalele diferențe ale acestora într-un mod rapid:
Baza de comparație | ȘTERGE | TRUNCHIA |
---|---|---|
Definiție | Instrucțiunea de ștergere este utilizată pentru a elimina înregistrări simple sau multiple dintr-un tabel existent, în funcție de condiția specificată. | Comanda truncate elimină datele complete dintr-un tabel existent, dar nu și tabelul în sine. Păstrează structura sau schema tabelului. |
Limba | Este o comandă DML (Data Manipulation Language). | Este o comandă DDL (Data Definition Language). |
UNDE | Poate folosi clauza WHERE pentru a filtra orice rând sau date specifice din tabel. | Nu folosește clauza WHERE pentru a filtra înregistrările din tabel. |
Permisiune | Trebuie să avem permisiunea DELETE pentru a folosi această comandă. | Trebuie să avem permisiunea ALTER pentru a folosi această comandă. |
Lucru | Această comandă elimină înregistrările una câte una. | Această comandă șterge întreaga pagină de date care conține înregistrările. |
Lacăt | Acesta va bloca rândul înainte de ștergere. | Aceasta va bloca pagina de date înainte de ștergere. |
Identitatea tabelului | Această comandă nu resetează identitatea tabelului deoarece șterge doar datele. | Resetează întotdeauna identitatea tabelului. |
Tranzacţie | Menține jurnalele de tranzacții pentru fiecare înregistrare ștearsă. | Nu menține jurnalele de tranzacții pentru fiecare pagină de date ștearsă. |
Viteză | Viteza sa este mică pentru că a menținut jurnalul. | Execuția sa este rapidă, deoarece a șters date întregi la un moment dat, fără a menține jurnalele de tranzacții. |
Trigger | Această comandă poate activa și declanșatorul aplicat pe masă și le provoacă să declanșeze. | Această comandă nu activează declanșatoarele aplicate pe masă pentru a trage. |
Restabili | Ne permite să restabilim datele șterse utilizând instrucțiunea COMMIT sau ROLLBACK. | Nu putem restaura datele șterse după ce folosim executarea acestei comenzi. |
Vedere indexată | Poate fi folosit cu vederi indexate. | Nu poate fi utilizat cu vizualizări indexate. |
Spaţiu | Declarația DELETE ocupă mai mult spațiu de tranzacție decât truncate deoarece menține un jurnal pentru fiecare rând șters. | Instrucțiunea TRUNCATE ocupă mai puțin spațiu de tranzacție deoarece menține un jurnal de tranzacții pentru întreaga pagină de date în loc de fiecare rând. |
Concluzie
În acest articol, am făcut o comparație între declarația de ștergere și trunchiere. Am ajuns la concluzia că o comandă DELETE este folosită atunci când dorim să personalizăm ștergerea înregistrărilor din tabel. Și o comandă TRUNCATE este folosită atunci când nu dorim să lăsăm înregistrări sau date în tabel, adică dorim să golim tabelul.