Diferența între ștergere și trunchiere

Anonim

Ștergeți vs Truncate

Ambele comenzi SQL (Structura Query Language), Ștergeți și Truncate sunt folosite pentru a scăpa de datele stocate în tabele într-o bază de date. Ștergerea este o instrucțiune DML (Data Manipulation Language) și elimină unele sau toate rândurile unei tabele. Clauza "Where" este utilizată pentru a specifica rândurile care trebuie șterse și dacă clauza Where nu este folosită cu instrucțiunea Delete șterge 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.

Ștergerea instrucțiunii

Ștergerea instrucțiunii permite utilizatorului să elimine datele dintr-un tabel existent într-o bază de date bazată pe o condiție specificată, iar clauza "Where where" este utilizată pentru a determina această condiție. Comanda de ștergere este menționată ca execuție înregistrată, deoarece șterge doar un singur rând în același timp și păstrează o intrare pentru fiecare ștergere de rând din jurnalul de tranzacții. Deci, acest lucru face ca operația să fie mai lentă. Ștergerea este o instrucțiune DML, deci nu este angajată automat în timpul executării comenzii. Prin urmare, funcția Ștergere poate fi derulată din nou pentru a accesa din nou datele, dacă este necesar. După executarea comenzii de ștergere, aceasta trebuie angajată sau reintrodusă pentru a salva definitiv modificările. Instrucțiunea de ștergere nu elimină structura tabelului din tabel. De asemenea, acesta nu distruge spațiul de memorie utilizat de tabel.

Sintaxa tipică pentru comanda Ștergere este prezentată mai jos.

DELETE FROM

sau

DELETE FROM WHERE

Declarația Truncate

Declarația Truncate elimină toate datele dintr-o tabelă existentă într-o bază de date, dar păstrează aceeași structură de tabel, privilegiile de acces și relațiile cu alte tabele. Deci, nu este necesară definirea tabelului din nou, iar vechea structură de tabelă poate fi utilizată, dacă utilizatorul dorește să reutilizeze tabelul din nou. Truncate elimină date întregi prin dealocarea paginilor de date utilizate pentru păstrarea datelor și numai aceste dealocări de pagină sunt păstrate în jurnalul de tranzacții. Prin urmare, comanda truncate utilizează doar mai puține resurse de sistem și jurnal de tranzacții pentru operare, deci este mai rapidă decât alte comenzi conexe. Truncate este o comandă DDL, deci utilizează angajamente auto înainte și după executarea instrucțiunii. Prin urmare, trunchiul nu poate relua din nou datele în nici un fel. Eliberă spațiul de memorie folosit de tabel după execuție. Însă instrucțiunea Truncate nu poate fi aplicată pe tabelele care se referă la constrângerile cheii străine.

Următoarea este sintaxa comună pentru instrucțiunea Truncate.

TRUNCATE TABLE

Care este diferența dintre ștergeți și trunchiați?

1. Ștergerea și trunchierea comenzilor 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 Ștergere poate fi utilizată pentru a șterge rânduri specifice numai într-un tabel folosind o condiție relevantă sau pentru a șterge toate rândurile fără condiții, în timp ce comanda Truncate poate fi utilizată numai pentru ștergerea întregii date din tabel.

3. Ștergerea este o comandă DML și poate relua operația, dacă este necesar, dar Truncate este o comandă DDL, deci este o declarație de comitere automată și nu poate fi returnată în nici un fel. Prin urmare, este important să folosiți cu atenție această comandă în gestionarea bazelor de date.

4. Operația Truncate consumă mai puține resurse de sistem și resurse de jurnal de tranzacții decât operația de ștergere, prin urmare Truncate este considerată mai rapidă decât Șterge.

5. De asemenea, Ștergerea nu distruge spațiul utilizat de tabel, în timp ce Truncate eliberează spațiul utilizat după executare, astfel încât Ștergerea nu este eficientă în cazul ștergerii întregii date dintr-o tabelă de bază de date.

6. Cu toate acestea, Truncate nu are voie să folosească când tabelul este referit de o constrângere de chei străine, și în acest caz, comanda Ștergere poate fi folosită în loc de Truncate.

7. În cele din urmă, ambele comenzi au avantaje și dezavantaje în aplicarea acestora în sistemele de gestionare a bazelor de date și utilizatorul ar trebui să fie conștient de utilizarea acestor comenzi în mod corespunzător pentru a obține rezultate bune.