Brisanje vs. Obrezovanje
Oba ukaza SQL (Structure Query Language), Delete in Truncate, se uporabljata, da se znebite podatkov, shranjenih v tabelah v bazi podatkov. Delete je stavek DML (Data Manipulation Language) in odstrani nekatere ali vse vrstice tabele. Klavzula »Where« se uporablja za določanje vrstic, ki jih je treba izbrisati, in če klavzula Where ni uporabljena s stavkom Delete, odstrani vse podatke v tabeli. Truncate je stavek DDL (Data Definition Language) in odstrani celotne podatke iz tabele. Oba ukaza ne uničita strukture tabele in sklicev na tabelo, po potrebi pa se odstranijo le podatki.
Izbriši izjavo
Izjava Delete omogoča uporabniku, da odstrani podatke iz obstoječe tabele v zbirki podatkov na podlagi določenega pogoja, za določanje tega pogoja pa se uporablja klavzula »Where«. Ukaz Delete se imenuje zabeležena izvedba, ker izbriše samo eno vrstico naenkrat in hrani vnos za vsako izbris vrstice v dnevniku transakcij. To torej povzroči počasnejše delovanje. Delete je stavek DML, zato ni samodejno potrjen med izvajanjem ukaza. Zato je mogoče operacijo brisanja vrniti nazaj za ponoven dostop do podatkov, če je potrebno. Po izvedbi ukaza Izbriši ga je treba potrditi ali povrniti, da se spremembe trajno shranijo. Izjava Delete ne odstrani strukture tabele tabele iz baze podatkov. Prav tako ne sprosti pomnilniškega prostora, ki ga uporablja tabela.
Tipična sintaksa za ukaz Izbriši je navedena spodaj.
IZBRIŠI IZ
ali
IZBRIŠI OD KJE
Obreži izjavo
Truncate stavek odstrani vse podatke iz obstoječe tabele v bazi podatkov, vendar ohrani isto strukturo tabele, tudi omejitve celovitosti, privilegije dostopa in razmerja do drugih tabel. Torej tabele ni treba znova definirati, staro strukturo tabele pa je mogoče uporabiti, če želi uporabnik znova uporabiti tabelo. Obrezovanje odstrani celotne podatke tako, da sprosti podatkovne strani, ki se uporabljajo za shranjevanje podatkov, in samo te sprostitve strani se hranijo v dnevniku transakcij. Zato ukaz truncate za delovanje uporablja le manj virov sistema in dnevnika transakcij, zato je hitrejši od drugih povezanih ukazov. Truncate je ukaz DDL, zato uporablja samodejne zaveze pred in po izvedbi stavka. Zato truncate ne more znova vrniti podatkov na noben način. Po izvedbi sprosti pomnilniški prostor, ki ga uporablja tabela. Toda stavka Truncate ni mogoče uporabiti za tabele, na katere se sklicujejo omejitve tujega ključa.
Sledi splošna sintaksa za stavek Truncate.
OKRAJ TABELO
Kakšna je razlika med Delete in Truncate?
1. Ukaza Delete in Truncate odstranita podatke iz obstoječih tabel v bazi podatkov, ne da bi pri tem poškodovali strukturo tabele ali druge reference na tabelo.
2. Vendar lahko ukaz Delete uporabite za brisanje določenih vrstic samo v tabeli z ustreznim pogojem ali za brisanje vseh vrstic brez kakršnih koli pogojev, medtem ko lahko ukaz Truncate uporabite samo za brisanje celotnih podatkov v tabeli.
3. Delete je ukaz DML in lahko povrne operacijo, če je potrebno, vendar je Truncate ukaz DDL, zato je stavek samodejne potrditve in ga ni mogoče vrniti na noben način. Zato je pomembno, da ta ukaz previdno uporabljate pri upravljanju baze podatkov.
4. Operacija obrezovanja porabi manj sistemskih virov in virov dnevnika transakcij kot operacija brisanja, zato velja, da je obrezovanje hitrejše od brisanja.
5. Poleg tega Delete ne sprosti prostora, ki ga uporablja tabela, medtem ko Truncate sprosti prostor, uporabljen po izvedbi, tako da Delete ni učinkovit v primeru izbrisa celotnih podatkov iz tabele baze podatkov.
6. Vendar funkcije Truncate ni dovoljeno uporabljati, ko se na tabelo sklicuje omejitev tujega ključa, in v tem primeru lahko namesto ukaza Truncate uporabite ukaz Delete.
7. Končno imata oba ukaza prednosti in tudi slabosti pri njuni uporabi v sistemih za upravljanje baz podatkov in uporabnik se mora zavedati pravilne uporabe teh ukazov za doseganje dobrih rezultatov.