logo

Razlika med ukazom Delete in Truncate

Razlika med ukazoma DELETE in TRUNCATE je najpogostejši del vprašanja na razgovoru. Uporabljajo se predvsem za brisanje podatkov iz podatkovne baze. Glavna razlika med njima je, da stavek delete izbriše podatke brez ponastavitve identitete tabele, medtem ko ukaz truncate ponastavi identiteto določene tabele . Ta članek pojasnjuje celoten pregled ukazov DELETE in TRUNCATE ter njunih razlik, ki se primarno uporabljata izmenično, vendar sta popolnoma različna.

Izbriši proti ukazu za obrezovanje

Kaj je ukaz DELETE?

Je DML ali ukaz za obdelavo podatkov uporablja se za brisanje zapisov iz tabele, ki niso potrebni v bazi podatkov. Odstrani celotno vrstico iz tabele in ustvari število izbrisanih vrstic. Za izvedbo tega ukaza potrebujemo dovoljenje za brisanje ciljne tabele. Omogoča nam tudi filtriranje in brisanje določenih zapisov z uporabo KJE stavek iz tabele.

Pojasnjuje, da imamo pred izvedbo tega ukaza varnostno kopijo naše baze podatkov, ker s to poizvedbo ne moremo obnoviti izbrisanih zapisov. Zato je varnostne kopije baze podatkov nam omogočajo obnovitev podatkov, kadar koli jih bomo potrebovali v prihodnosti.

Naslednja sintaksa pojasnjuje ukaz DELETE za odstranitev podatkov iz tabele:

 DELETE FROM table_name WHERE condition; 

Kaj je ukaz TRUNCATE?

Odrezana izjava je a DDL ali ukaz jezika za definicijo podatkov uporablja se za odstranitev celotnih podatkov iz tabele, ne da bi odstranili strukturo tabele. Ne moremo uporabiti KJE s tem ukazom, tako da filtriranje zapisov ni mogoče. Po izvedbi tega ukaza smo ne more povrniti izbrisanih podatkov ker se dnevnik med izvajanjem te operacije ne vzdržuje.

Ukaz truncate sprosti razporeditev strani namesto vrstic in namesto vrstic v dnevnikih transakcij naredi vnos za strani za sprostitev. Ta ukaz zaklene strani namesto vrstic; zato zahteva manj ključavnic in virov. Upoštevajte, da stavka truncate ne moremo uporabiti, ko se na tabelo sklicuje tuji ključ ali če sodeluje v indeksiranem pogledu.

onemogočite razvijalski način

Naslednja sintaksa pojasnjuje ukaz TRUNCATE za odstranitev podatkov iz tabele:

 TRUNCATE TABLE table_name; 

Ključne razlike med DELETE in TRUNCATE

Naslednje točke pojasnjujejo razlike med ukazom delete in truncate:

  1. Stavek DELETE uporabimo, ko želimo odstraniti nekatere ali vse zapise iz tabele, medtem ko stavek TRUNCATE izbriše celotne vrstice iz tabele.
  2. DELETE je ukaz DML, saj le spreminja podatke tabele, medtem ko je TRUNCATE ukaz DDL.
  3. Ukaz DELETE lahko filtrira zapis/torke z uporabo stavka WHERE. Vendar pa ukaz TRUNCATE ne dovoljuje uporabe KJE klavzula, zato med prirezovanjem ne moremo filtrirati vrstic.
  4. DELETE aktivira vse brisanje sprožilcev na mizo za ogenj. Vendar pa se pri operaciji skrajšanja ne sproži noben sprožilec, ker ne deluje na posameznih vrsticah.
  5. DELETE izvede brisanje vrstice za vrstico iz tabele, v vrstnem redu, v katerem so bile obdelane. Vendar TRUNCATE deluje na podatkovnih straneh namesto na vrsticah, ker je naenkrat izbrisal celotne podatke tabele.
  6. Stavek DELETE samo izbriše zapise in ne ponastavi identiteta mize , medtem ko TRUNCATE ponastavi identiteto določene tabele.
  7. Ukaz DELETE zahteva več zaklepanja in virov baze podatkov, ker pridobi zaklepanje za vsako izbrisano vrstico. V nasprotju s tem TRUNCATE pridobi zaklepanje podatkovne strani, preden izbriše podatkovno stran; zato zahteva manj zaklepanja in malo virov.
  8. Stavek DELETE naredi vnos v dnevnik transakcij za vsako izbrisano vrstico, medtem ko TRUNCATE beleži dnevnik transakcij za vsako podatkovno stran.
  9. Ukaz TRUNCATE je hitreje kot ukaz DELETE, saj sprosti podatkovne strani namesto vrstic in v dnevnike transakcij zapiše podatkovne strani namesto vrstic.
  10. Ko je zapis izbrisan z ukazom TRUNCATE, ga ne moremo obnoviti nazaj. Nasprotno pa lahko obnovimo izbrisane podatke, ki smo jih odstranili z operacijo DELETE.

Primerjalni grafikon DELETE proti TRUNCATE

Naslednja primerjalna tabela na hitro razloži njihove glavne razlike:

Osnova primerjave IZBRIŠI OKRAJ
Opredelitev Stavek za brisanje se uporablja za odstranitev enega ali več zapisov iz obstoječe tabele, odvisno od podanega stanja. Ukaz truncate odstrani celotne podatke iz obstoječe tabele, ne pa tudi same tabele. Ohranja strukturo ali shemo tabele.
Jezik To je ukaz DML (jezik za upravljanje podatkov). To je ukaz DDL (Data Definition Language).
KJE Za filtriranje katere koli določene vrstice ali podatkov iz tabele lahko uporabi klavzulo WHERE. Za filtriranje zapisov iz tabele ne uporablja klavzule WHERE.
Dovoljenje Za uporabo tega ukaza potrebujemo dovoljenje DELETE. Za uporabo tega ukaza potrebujemo dovoljenje ALTER.
Delo Ta ukaz odstrani zapise enega za drugim. Ta ukaz izbriše celotno stran s podatki, ki vsebuje zapise.
Zaklepanje Pred brisanjem bo vrstico zaklenil. Stran s podatki bo zaklenjena pred izbrisom.
Identiteta tabele Ta ukaz ne ponastavi identitete tabele, ker izbriše le podatke. Vedno ponastavi identiteto tabele.
Transakcija Vzdržuje dnevnike transakcij za vsak izbrisan zapis. Ne vzdržuje dnevnikov transakcij za vsako stran z izbrisanimi podatki.
Hitrost Njegova hitrost je počasna, ker je vzdrževal hlod. Njegova izvedba je hitra, ker je izbrisal vse podatke naenkrat brez vzdrževanja dnevnikov transakcij.
Sprožilec Ta ukaz lahko aktivira tudi sprožilec, uporabljen na mizi, in povzroči, da se sprožijo. Ta ukaz ne aktivira sprožilcev, uporabljenih na mizi.
Obnovi Omogoča nam obnovitev izbrisanih podatkov z uporabo stavka COMMIT ali ROLLBACK. Izbrisanih podatkov po uporabi tega ukaza ne moremo obnoviti.
Indeksiran pogled Uporablja se lahko z indeksiranimi pogledi. Ni ga mogoče uporabiti z indeksiranimi pogledi.
Vesolje Stavek DELETE zasede več transakcijskega prostora kot truncate, ker vzdržuje dnevnik za vsako izbrisano vrstico. Stavek TRUNCATE zasede manj prostora za transakcije, ker vzdržuje dnevnik transakcij za celotno podatkovno stran namesto za vsako vrstico.

Zaključek

V tem članku smo naredili primerjavo med stavkom delete in truncate. Ugotovili smo, da se ukaz DELETE uporablja, ko želimo prilagoditi brisanje zapisov iz tabele. In ukaz TRUNCATE se uporablja, ko ne želimo pustiti nobenih zapisov ali podatkov v tabeli, to je, da želimo izprazniti tabelo.