Priporočena, 2021

Izbira Urednika

Razlika med DELETE in TRUNCATE v SQL

DELETE in TRUNCATE sta ukaza, ki se uporabljata za odstranitev tuples iz razmerja, vendar se razlikujeta v mnogih kontekstih. V ukazu SQL je ukaz DELETE ukaz jezika za manipulacijo podatkov, medtem ko je ukaz TRUNCATE ukaz Data Language Definition . Toda točka, ki nam omogoča, da razlikujemo med DELETE in TRUNCATE, je, da lahko DELETE odstrani določene korake iz relacije, medtem ko ukaz TRUNCATE odstrani celotne korake iz razmerja.

tu se ne smemo ustaviti, obstaja še veliko razlik med DELETE in TRUNCATE. Dovolite nam, da jih razpravljamo s pomočjo primerjalne tabele, prikazane spodaj.

Primerjalna tabela

Podlaga za ComparsionDELETETRUNCATE
OsnovnoDoločite lahko tuple, ki jo želite izbrisati.Izbriše vse zapise iz razmerja.
JezikDELETE je ukaz Jezik za manipulacijo podatkov.TRUNCATE je ukaz za jezik definicije podatkov.
KJEUkaz DELETE lahko vsebuje člen WHERE.Ukaz TRUNCATE nima klavzule WHERE.
SprožilecUkaz DELETE aktivira sprožilec, ki se uporablja na tabeli, in povzroči njihovo sprožitev.Ukaz TRUNCATE ne sproži sprožilcev za sprožitev.
BrisanjeUkaz DELETE odpravi zapise enega po enega.TRUNCATE izbriše celotno podatkovno stran, ki vsebuje zapise.
ZakleniUkaz DELETE zaklene vrstico / zaporedje pred brisanjem.Ukaz TRUNCATE zapre podatkovno stran pred brisanjem podatkov tabele.
HitrostUkaz DELETE deluje počasneje kot TRUNCATE.TRUNCATE je hitrejši kot DELETE.
TransakcijaDELETE zapiše dnevnik transakcij za vsako izbrisano zaporedje.TRUNCATE zapis dnevnika transakcij za vsako stran izbrisanih podatkov.
ObnoviUkaz DELETE lahko spremljate z ukazom COMMIT ali ROLLBACK.Ukaz TRUNCATE ne more biti ROLLBACK.

Opredelitev DELETE

DELETE je ukaz DML ( Data Manipulation Language ). Naloga ukaza DELETE je izbrisati ali odstraniti tuple iz tabele ali relacije. Z DELETE lahko odstranimo celotno zaporedje z vsemi vrednostmi atributov iz relacije. DELETE ne odstrani vrednosti določenega atributa, tuple iz relacije.

S tipko WHERE lahko filtrirate zapise, ki jih želite izbrisati iz tabele. Če podate stavek WHERE v stavku DELETE, bo izbrisal samo tuple, ki izpolnjujejo pogoj WHERE. Če pa ne podate stavka WHERE v stavku DELETE, privzeto izbriše ali odstrani vse zapise iz relacije. Stavek WHERE v stavku DELETE lahko vsebuje ugnezdene stavke SELECT-FROM-WHERE .

Skladnja ukaza DELETE je naslednja:

DELETE FROM ime_tabele WHERE [ conditon ];

Ukaz DELETE deluje samo na eni relaciji ali tabeli naenkrat. V primeru, da želite izbrisati tuple iz različnih razmerij, morate za vsako uvrstiti drugačen ukaz DELETE. Toda brisanje tuple iz ene povezave lahko krši referenčno celovitost baze podatkov, ki jo je mogoče rešiti s pomočjo prožilcev. Če ukaz DELETE krši referenčno integriteto, se aktivirajo vsi referenčni sprožilci (če so podani), ki razširjajo dejanje brisanja na zaporedjih različnih razmerij, ki se nanašajo na izbrisane tuple.

Ukaz DELETE najprej zaklene vrstico ali zaporedje, ki ga je treba izbrisati, in nato izbriše zaporedje. Zato zahteva več ključavnic in virov, zaradi česar je počasnejši . Spremembe lahko naredite s stavkom DELETE s trajanjem z ukazom COMMIT ali pa ponastavite bazo podatkov z ROLLBACK .

Opredelitev TRUNCATE

TRUNCATE je podoben ukazu DELETE, saj tudi izbriše tuples iz relacije. Razlika je v tem, da izbriše celotne torke iz razmerja. Ko se izvrši ukaz TRUNCATE, se izbrišejo celotni podatki iz tabele, vsaka noga skupaj z vsemi vrednostmi atributov se izloči iz tabele. Toda struktura tabele še vedno obstaja v bazi podatkov. Torej lahko spet vnesete torke v tabelo. TRUNCATE je ukaz za jezik definicije podatkov.

Skladnja ukaza TRUNCATE je naslednja:

TRUNCATE TABLE ime_tabele ;

Podobno kot DELETE, TRUNCATE ne deluje na podatkovnih tabelah vrstic za vrstico. Namesto tega deluje na podatkovnih straneh, ki shranjujejo podatke tabele. Zdaj, ko TRUNCATE izbriše podatkovne strani, mora pridobiti zaklepanje na podatkovnih straneh namesto korakov. Posledica tega je manjša potreba po ključavnicah in virih, zaradi katerih je TRUNCATE hitrejši v primerjavi z DELETE.

Izvajanje ukaza TRUNCATE ne aktivira nobenih sprožilcev, ker ne upravlja podatkovnih vrstic. TRUNCATE ni mogoče izvesti, če je tabela navedena s katerim koli tujim ključem . Ko ukaz TRUNCATE izbriše podatke tabele, je nikoli ne morete vrniti nazaj.

Ključne razlike med DELETE in TRUNCATE v SQL

  1. Glavna razlika med DELETE in TRUNCATE je v tem, da lahko z DELETE izbrišete določeno povezavo iz razmerja. Vendar pa bo uporaba TRUNCATE izbrisala celotne torke iz relacije.
  2. DELETE je ukaz DML, medtem ko je TRUNCATE ukaz DDL.
  3. DELETE uporablja člen WHERE za filtriranje zapisov / zapisov, ki jih je treba izbrisati. Vendar pa TRUNCATE ne zahteva klavzule WHERE, ker izbriše vse zapise, tako da ni treba filtrirati zaklepov.
  4. DELETE aktivira referenčne proge, ki se uporabljajo za tabele. Toda TRUNCATE ne sproži nobenega sprožilca na mizi.
  5. Ukaz DELETE iz tabele odpravi zaporedje korakov, v vrstnem redu se obdelajo. Vendar pa TRUNCATE ne deluje na torcih ena za drugo. Namesto tega TRUNCATE deluje na podatkovni strani, ki shranjuje podatke tabele.
  6. DELETE pridobi ključavnico na nožnici pred brisanjem, medtem ko TRUNCATE pridobi ključavnico na podatkovni strani pred brisanjem podatkovne strani.
  7. TRUNCATE je hitrejši v primerjavi z ukazom DELETE.
  8. DELETE zapiše dnevnik transakcij za vsako ključno točko, medtem ko TRUNCATE zapiše dnevnik transakcij za vsako podatkovno stran.
  9. Ko izbrišete podatke s TRUNCATE, jih nikoli ne morete vrniti nazaj, medtem ko lahko podatke obnovite nazaj, kar ste izbrisali z ukazom DELETE.

Sklep:

Če želite prilagoditi brisanje zapisov iz tabele, lahko uporabite ukaz DELETE. Če želite izprazniti tabelo, kar pomeni, da ne želite zapustiti podatkov v tabeli, uporabite ukaz TRUNCATE.

Top