Diferența dintre Drop și Truncate

Drop vs Truncate

Drop și Truncate sunt două instrucțiuni SQL (Structured Query Language) care sunt utilizate în sistemele de gestionare a bazelor de date, unde dorim să eliminăm înregistrările de date dintr-o bază de date. Atât instruciunile Drop și Truncate elimină întreaga date într-un tabel și instrucțiunea SQL asociată. Operația de ștergere nu este eficientă în acest caz, deoarece utilizează mai multe spații de stocare decât Drop and Truncate.

În cazul în care, dacă vrem să aruncăm o tabelă într-o bază de date împreună cu toate datele sale, SQL ne permite să realizăm cu ușurință acest lucru folosind instrucțiunea Drop. Comanda Drop este o comandă DDL (Data Definition Language) și poate fi folosită pentru a distruge o bază de date, o tabelă, un index sau o vizualizare existentă. Sterge intreaga informatie dintr-un tabel, precum si structura de tabel din baza de date. De asemenea, am putea dori să scăpăm de toate datele dintr-o tabelă pur și simplu, dar fără tabel și putem folosi instrucțiunea Truncate în SQL într-un astfel de scenariu. Truncate este, de asemenea, o comandă DDL și elimină toate rândurile dintr-un tabel, dar păstrează aceeași definiție a tabelului pentru utilizare ulterioară.

Comanda drop

Așa cum am menționat mai devreme, comanda Drop elimină definiția tabelului și toate datele sale, constrângerile de integritate, indicele, declanșatoarele și privilegiile de acces, care au fost create în tabelul respectiv. Astfel, obiectele existente din baza de date se scot în întregime, iar relațiile cu alte tabele nu vor mai fi valide după executarea comenzii. De asemenea, elimină toate informațiile despre tabel din dicționarul de date. Următoarea este sintaxa tipică pentru utilizarea instrucțiunii Drop pe o masă.

DROP TABEL

Trebuie să înlocuim pur și simplu numele tabelului pe care dorim să-l eliminăm din baza de date în exemplul de mai sus al comenzii Drop.

Este important de subliniat că instrucțiunea Drop nu poate fi folosită pentru a șterge o tabelă, care a fost deja menționată de o constrângere a cheii străine. În acest caz, ar trebui să renunțe mai întâi la constrângerea cheii externe de referință sau la masa respectivă. De asemenea, instrucțiunea Drop nu poate fi aplicată pe tabelele de sistem din baza de date.

Ca comandă Drop este o instrucțiune de comitere automată, operațiunea declanșată o dată nu poate fi derulată înapoi și niciun declanșator nu va fi declanșat. Atunci când o tabelă este abandonată, toate referințele la tabel nu vor fi valide și astfel, dacă vrem să folosim din nou tabelul, trebuie recreat cu toate constrângerile de integritate și privilegiile de acces. Toate relațiile cu celelalte mese trebuie, de asemenea, să fie localizate din nou.

Trageți comanda

Comanda Truncate este o comandă DDL și elimină toate rândurile dintr-un tabel fără condiții specificate de utilizator și eliberează spațiul utilizat de tabel, dar structura tabelului cu coloanele, indici și constrângeri rămân aceleași. Truncate elimină datele dintr-un tabel prin dealocarea paginilor de date utilizate pentru stocarea datelor de tabel și numai aceste delaocări de pagină sunt păstrate în jurnalul de tranzacții. Deci, utilizează mai puține resurse de jurnalizare a tranzacțiilor și resurse de sistem în comparație cu alte comenzi SQL asemănătoare, cum ar fi Ștergeți. Deci Truncate este o declarație puțin mai rapidă decât altele. Urmează sintaxa tipică pentru comanda Truncate.

TRUNCATE TABLE

Ar trebui să înlocuim numele tabelului, din care dorim să eliminăm toate datele, în sintaxa de mai sus.

Truncate nu poate fi folosit pe o tabelă care a fost menționată de o constrângere de cheie străină. Utilizează o comitere automată înainte de a acționa și un alt angajament după aceea, astfel că retragerea tranzacției este imposibilă și nu se declanșează niciun declanșator. Dacă vrem să reutilizăm tabelul, trebuie doar să accesăm definiția tabelului existent din baza de date.

Care este diferența dintre Drop și Truncate?

Ambele comenzi Drop și Truncate sunt comenzi DDL și declarații de comitere automată, astfel încât tranzacțiile efectuate utilizând aceste comenzi nu pot fi derulate înapoi.

Diferența principală dintre Drop și Truncate este că comanda Drop elimină nu numai toate datele dintr-un tabel, ci elimină definitiv structura tabelului din baza de date cu toate referințele, în timp ce comanda Truncate elimină numai toate rândurile dintr-un tabel , și păstrează structura tabelului și referințele sale.

Dacă o tabelă este abandonată, relațiile cu alte tabele nu vor mai fi valabile, iar constrângerile de integritate și privilegiile de acces vor fi, de asemenea, eliminate. Deci, dacă tabelul trebuie să fie refolosit, trebuie reconstituit cu relațiile, constrângerile de integritate și, de asemenea, cu privilegiile de acces. Dar dacă o masă este trunchiată, structura tabelului și constrângerile acesteia rămân pentru utilizare ulterioară și astfel, oricare dintre recreațiile de mai sus nu este necesară pentru reutilizarea.

Când aceste comenzi sunt aplicate, trebuie să fim precauți să le folosim. De asemenea, ar trebui să înțelegem mai bine natura acestor comenzi, modul în care funcționează și, de asemenea, o planificare atentă înainte de a le folosi, pentru a preveni lipsa esențialelor. În cele din urmă, ambele comenzi pot fi utilizate pentru curățarea rapidă și ușoară a bazelor de date, consumând mai puține resurse.