Delete vs Truncate
Atât comenzile SQL (Structure Query Language), cât și Delete și Truncate sunt folosite pentru a scăpa de datele stocate în tabele dintr-o bază de date. Delete este o instrucțiune DML (Data Manipulation Language) și elimină unele sau toate rândurile unui tabel. „Clauza unde” este folosită pentru a specifica rândurile care trebuie șterse, iar dacă clauza Where nu este utilizată cu instrucțiunea Delete, elimină toate datele din tabel. Truncate este o instrucțiune DDL (Data Definition Language) și elimină date întregi din tabel. Ambele comenzi nu distrug structura tabelului și referințele la tabel și numai datele sunt eliminate după cum este necesar.
Delete Statement
Instrucțiunea Delete permite utilizatorului să elimine date dintr-un tabel existent dintr-o bază de date pe baza unei condiții specificate, iar „clauza unde” este folosită pentru a determina această condiție. Comanda de ștergere este denumită execuție înregistrată, deoarece șterge doar un rând la un moment dat și păstrează o intrare pentru fiecare ștergere de rând în jurnalul de tranzacții. Deci, acest lucru face ca operația să fie mai lentă. Delete este o instrucțiune DML și, prin urmare, nu este comisă automat în timpul executării comenzii. Prin urmare, operația de ștergere poate fi anulată pentru a accesa din nou datele, dacă este necesar. După executarea comenzii Delete, aceasta ar trebui să fie confirmată sau anulată pentru a salva definitiv modificările. Instrucțiunea Delete nu elimină structura tabelului din baza de date. De asemenea, nu dealoca spațiul de memorie folosit de tabel.
Sintaxa tipică pentru comanda de ștergere este menționată mai jos.
ȘTERGERE DE LA
sau
ȘTERGERE DE UNDE
Truncate Statement
Instrucțiunea Truncate elimină toate datele dintr-un tabel existent dintr-o bază de date, dar păstrează aceeași structură de tabel, de asemenea constrângerile de integritate, privilegiile de acces și relațiile cu celel alte tabele. Deci, nu este necesară definirea din nou a tabelului, iar vechea structură a tabelului poate fi utilizată, dacă utilizatorul dorește să refolosească din nou tabelul. Truncate elimină datele întregi prin dealocarea paginilor de date utilizate pentru a păstra datele și numai aceste dealocare a paginilor sunt păstrate în jurnalul de tranzacții. Prin urmare, comanda truncate utilizează doar câteva resurse de sistem și jurnalul de tranzacții pentru operare, deci este mai rapidă decât alte comenzi asociate. Truncate este o comandă DDL, deci folosește angajamente automate înainte și după executarea instrucțiunii. Prin urmare, truncate nu poate rula înapoi datele din nou în niciun fel. Eliberează spațiul de memorie folosit de tabel după execuție. Dar instrucțiunea Truncate nu poate fi aplicată pe tabelele la care se face referire prin constrângeri de cheie străină.
Urmează sintaxa comună pentru instrucțiunea Truncate.
TRUNCATE TABLE
Care este diferența dintre Delete și Truncate?
1. Comenzile de ștergere și trunchiere elimină datele din tabelele existente într-o bază de date fără a afecta structura tabelului sau alte referințe la tabel.
2. Cu toate acestea, comanda Delete poate fi folosită pentru a șterge anumite rânduri numai dintr-un tabel folosind o condiție relevantă sau pentru a șterge toate rândurile fără nicio condiție, în timp ce comanda Truncate poate fi folosită numai pentru ștergerea datelor întregi din tabel.
3. Ștergerea este o comandă DML și poate anula operația, dacă este necesar, dar Truncate este o comandă DDL, deci este o instrucțiune de confirmare automată și nu poate fi anulată în niciun fel. Prin urmare, este important să utilizați această comandă cu atenție în gestionarea bazei de date.
4. Operația de trunchiere consumă mai puține resurse de sistem și resurse de jurnal de tranzacții decât operațiunea de ștergere, prin urmare, trunchierea este considerată mai rapidă decât ștergerea.
5. De asemenea, Delete nu dealoca spațiul folosit de tabel, în timp ce Truncate eliberează spațiul folosit după execuție, deci Delete nu este eficient în cazul ștergerii întregii date dintr-un tabel al bazei de date.
6. Cu toate acestea, trunchierea nu poate fi utilizată atunci când tabelul este referit printr-o constrângere de cheie străină și, în acest caz, comanda Delete poate fi utilizată în loc de trunchiere.
7. În cele din urmă, ambele comenzi au avantaje și, de asemenea, dezavantaje în aplicarea lor în sistemele de gestionare a bazelor de date, iar utilizatorul ar trebui să fie conștient de utilizarea acestor comenzi în mod corespunzător pentru a obține rezultate bune.