Tilk vs kärbimine
Drop and Truncate on kaks SQL (Structured Query Language) avaldust, mida kasutatakse andmebaasihaldussüsteemides, kus soovime andmebaasist andmekirjed eemaldada. Nii väljalangemise kui ka kärbimise avaldused eemaldavad kõik andmed tabelist ja sellega seotud SQL-i väljavõtted. Kustutamisoperatsioon pole sel juhul efektiivne, kuna see kasutab rohkem salvestusruume kui Drop and Truncate.
Juhul, kui tahame andmebaasis oleva tabeli koos kõigi andmetega ära visata, võimaldab SQL meil seda hõlpsalt täita, kasutades Drop-avaldust. Käsk Drop on käsk DDL (Data Definition Language) ja seda saab kasutada olemasoleva andmebaasi, tabeli, indeksi või vaate hävitamiseks. See kustutab kogu teabe tabelist, samuti tabeli struktuuri andmebaasist. Samuti võime soovida kõigist tabeli andmetest lahti saada lihtsalt, kuid ilma tabelita ja sellises stsenaariumis võime kasutada SQL-is Truncate-avaldust. Kärbimine on ka DDL-käsk ja see kõrvaldab kõik tabeli read, kuid säilitab tabeli määratluse tulevikus kasutamiseks.
Drop käsk
Nagu varem mainitud, eemaldab käsk Drop tabeli määratluse ja kõik selle tabeli jaoks loodud andmed, terviklikkuse piirangud, indeksid, päästikud ja juurdepääsuõigused. Nii kustutab see olemasoleva objekti andmebaasist täielikult ja ka seosed teiste tabelitega ei kehti enam pärast käsu täitmist. Samuti eemaldab see kogu teabe tabeli kohta andmete sõnastikust. Järgnevalt on toodud tüüpiline süntaks Drop-avalduse kasutamiseks tabelis.
DROP TABEL
Peame lihtsalt asendama ülaltoodud käsu Drop näites tabeli nime, mille tahame andmebaasist eemaldada.
Oluline on rõhutada, et Drop-avaldust ei saa kasutada tabeli kustutamiseks, millele on juba viidatud võõra võtme piiranguga. Sel juhul tuleks kõigepealt loobuda viidatava võõrvõti piirangust või konkreetsest tabelist. Samuti ei saa Drop-avaldust rakendada andmebaasi süsteemitabelites.
Kuna käsk Drop on automaatne sidumisavaldus, ei saa pärast vallandatud toimingut tagasi minna ja ühtegi päästikut ei vallandata. Tabeli väljalangemisel ei kehti kõik viited tabelile ja seega, kui tahame tabelit uuesti kasutada, tuleb see uuesti luua koos kõigi terviklikkuse piirangute ja juurdepääsuõigustega. Kõik seosed teiste tabelitega peavad samuti uuesti paiknema.
Kärbi käsk
Kärbimiskäsk on DDL-käsk ja see eemaldab kõik tabeli read ilma kasutaja määratud tingimusteta ja vabastab tabeli kasutatava ruumi, kuid tabeli struktuur koos selle veergude, indeksite ja piirangutega jääb samaks. Kärbimine kõrvaldab andmed tabelist, paigutades tabeli andmete salvestamiseks kasutatavad andmelehed, tehingute logis hoitakse ainult neid lehtede tehingute paigutusi. Nii et see kasutab vähem tehingute logi ressursse ja süsteemiressursse, võrreldes teiste seotud SQL-käskudega, näiteks Kustuta. Nii et kärpimine on teistest pisut kiirem avaldus. Järgnev on käsu Truncate tüüpiline süntaks.
KIIRTABEL
Peaksime ülaltoodud süntaksis asendama tabeli nime, kust tahame kogu andmed eemaldada.
Kärbimist ei saa kasutada tabelis, millele on viidatud võõra võtme piiranguga. Ta kasutab enne toimingut automaatselt kohustust ja pärast seda veel ühte kohustust, nii et tehingu tagasivõtmine on võimatu ja päästikuid ei vallandata. Kui tahame tabelit uuesti kasutada, peame kasutama ainult andmebaasis olemasolevat tabeli määratlust.
Mis vahe on tilk ja kärpimine?
Mõlemad käsud Drop ja Truncate on DDL käsud ja ka automaatsete käskude käsud, nii et nende käskude abil tehtud tehinguid ei saa tagasi tõmmata.
Peamine erinevus tilgutamise ja kärbimise vahel on see, et käsu Drop abil eemaldatakse mitte ainult kõik tabelis olevad andmed, vaid ka see eemaldab tabeli struktuuri püsivalt andmebaasist koos kõigi viidetega, samal ajal kui käsk Kärbimine eemaldab ainult kõik tabeli read ja see säilitab tabeli struktuuri ja selle viited.
Tabeli väljalangemisel ei kehti seosed teiste tabelitega enam ning eemaldatakse ka terviklikkuse piirangud ja juurdepääsuõigused. Nii et kui tabelit on vaja uuesti kasutada, tuleb see rekonstrueerida vastavalt suhetele, terviklikkuse piirangutele ja ka juurdepääsuõigustele. Kuid kui laud on kärbitud, jäävad laua struktuur ja selle piirangud edaspidiseks kasutamiseks ja seega pole ükski ülaltoodud puhkus taaskasutamiseks vajalik.
Nende käskude rakendamisel peame nende kasutamisel olema ettevaatlikud. Samuti peaks meil olema parem arusaam nende käskude olemusest, nende tööpõhimõttest ja enne nende kasutamist hoolikalt kavandada, et vältida vajalike põhiosade puudumist. Lõpuks saab mõlemat käsku kasutada andmebaaside kiireks ja hõlpsaks puhastamiseks, kulutades vähem ressursse.