Tilk vs kärpimine
Drop and Truncate on kaks SQL-i (struktureeritud päringukeel) lauset, mida kasutatakse andmebaaside haldussüsteemides, kus me soovime andmebaasist andmekirjed eemaldada. Nii Drop kui ka Truncate laused eemaldavad kogu tabeli andmed ja seotud SQL-lause. Kustutustoiming pole sel juhul efektiivne, kuna see kasutab rohkem salvestusruume kui Drop and Truncate.
Juhul, kui tahame andmebaasi tabeli koos kõigi andmetega ära visata, võimaldab SQL meil seda Drop-lause abil hõlpsasti teostada. Drop-käsk on DDL (Data Definition Language) käsk ja seda saab kasutada olemasoleva andmebaasi, tabeli, indeksi või vaate hävitamiseks. See kustutab kogu tabelis sisalduva teabe ja ka andmebaasi struktuuri. Samuti võime soovida vabaneda kõigist tabeli andmetest lihtsalt, kuid ilma tabelita, ja võime sellises stsenaariumis kasutada SQL-i lauset Truncate. Truncate on ka DDL-käsk ja see kõrvaldab kõik tabeli read, kuid säilitab tabeli definitsiooni edaspidiseks kasutamiseks.
Viska käsk
Nagu varem mainitud, eemaldab Drop-käsk tabeli definitsiooni ja kõik selle andmed, terviklikkuse piirangud, indeksid, päästikud ja juurdepääsuõigused, mis loodi just sellele tabelile. Seega viskab see olemasoleva objekti andmebaasist täielikult välja ning seosed teiste tabelitega ei kehti ka pärast käsu täitmist. Samuti eemaldab see kogu tabeli teabe andmesõnastikust. Järgmine on tüüpiline süntaks Drop-lause kasutamiseks tabelis.
LENNUD TABEL
Peame ülaltoodud käsu Drop näites lihtsalt asendama tabeli nime, mille tahame andmebaasist eemaldada.
Oluline on märkida, et Drop-lauset ei saa kasutada tabeli kustutamiseks, millele on juba viidanud võõra võtme piirang. Sel juhul tuleks kõigepealt loobuda viitava võõrvõti piirangust või konkreetsest tabelist. Samuti ei saa Drop-lauset andmebaasis olevate süsteemitabelite suhtes rakendada.
Kuna käsk Drop on automaatse kinnituse avaldus, ei saa pärast käivitamist toimingut tagasi kerida ja päästikuid ei käivitata. Kui tabel loobutakse, ei kehti kõik viited tabelile ja seega, kui tahame tabelit uuesti kasutada, tuleb see uuesti luua kõigi terviklikkuse piirangute ja juurdepääsuõigustega. Kõik suhted teiste tabelitega tuleb samuti uuesti leida.
Kärbi käsk
Käsk Truncate on DDL-käsk ja see eemaldab kõik tabeli read ilma kasutaja määratud tingimusteta ja vabastab tabeli kasutatud ruumi, kuid tabeli struktuur koos veergude, indeksite ja piirangutega jääb samaks. Truncate kõrvaldab andmed tabelist, jaotades tabeliandmete salvestamiseks kasutatud andmelehed ja tehingulogis hoitakse ainult neid lehtede jaotusi. Seega kasutab see vähem tehingulogi ressursse ja süsteemiressursse võrreldes teiste seotud SQL-käskudega, näiteks Kustuta. Nii et Truncate on natuke kiirem avaldus kui teised. Järgneb käsu Truncate tüüpiline süntaks.
LÕPPETABEL
Peaksime ülaltoodud süntaksis asendama tabeli nime, kust soovime kogu andmed eemaldada.
Lõigata ei saa kasutada tabelis, millele on viidatud võõra võtme piirang. See kasutab kohustust automaatselt enne toimimist ja teist kohustust hiljem, nii et tehingu tagasivõtmine on võimatu ja päästikuid ei käivitata. Kui tahame tabelit taaskasutada, peame pääsema juurde ainult andmebaasis olemasolevale tabelimääratlusele.
Mis vahe on kukutamisel ja kärpimisel?
Nii Drop kui ka Truncate käsud on DDL-käsud ja ka automaatse sidumise avaldused, nii et nende käskude abil sooritatud tehinguid ei saa tagasi kerida.
Peamine erinevus Drop ja Truncate vahel seisneb selles, et Drop käsk eemaldab mitte ainult kõik tabeli andmed, vaid ka tabeli struktuuri jäädavalt andmebaasist koos kõigi viidetega, käsk Truncate eemaldab aga ainult kõik tabeli read ja see säilitab tabeli struktuuri ja selle viited.
Kui tabel loobutakse, siis seosed teiste tabelitega ei kehti enam ning eemaldatakse ka terviklikkuse piirangud ja juurdepääsuõigused. Nii et kui tabelit on vaja taaskasutada, tuleb see rekonstrueerida seoste, terviklikkuse piirangute ja ka juurdepääsuõigustega. Kuid kui tabelit kärbitakse, jäävad tabeli struktuur ja selle piirangud edaspidiseks kasutamiseks ja seega pole ülaltoodud puhkeaegu taaskasutamiseks vaja.
Nende käskude rakendamisel peame nende kasutamisel olema ettevaatlikud. Samuti peaksime paremini mõistma nende käskude olemust, nende toimimist ja enne nende kasutamist hoolikat planeerimist, et vältida oluliste puudumist. Lõpuks saab mõlemat käsku kasutada andmebaaside kiireks ja lihtsaks puhastamiseks, kulutades vähem ressursse.