Изпускане срещу съкращаване
Drop и Truncate са два оператора на SQL (Structured Query Language), които се използват в системите за управление на бази данни, където искаме да премахнем записи на данни от база данни. И двата оператора Drop и Truncate премахват всички данни в таблица и свързания SQL израз. Операцията за изтриване не е ефективна в този случай, защото използва повече пространство за съхранение от Drop и Truncate.
В случай, че искаме да отхвърлим таблица в база данни заедно с всичките й данни, SQL ни позволява лесно да извършим това с помощта на оператор Drop. Командата Drop е DDL (Език за дефиниране на данни) команда и може да се използва за унищожаване на съществуваща база данни, таблица, индекс или изглед. Той изтрива цялата информация в таблица, както и структурата на таблицата от базата данни. Освен това може да пожелаем просто да се отървем от всички данни в таблица, но без таблицата, и можем да използваме оператора Truncate в SQL в такъв сценарий. Truncate също е DDL команда и елиминира всички редове в таблица, но запазва дефиницията на таблицата същата за бъдеща употреба.
Команда за пускане
Както бе споменато по-рано, командата Drop премахва дефиницията на таблицата и всички нейни данни, ограничения за интегритет, индекси, тригери и привилегии за достъп, които са създадени върху тази конкретна таблица. Така че премахва изцяло съществуващия обект от базата данни и връзките с други таблици също вече няма да са валидни след изпълнение на командата. Също така премахва цялата информация за таблицата от речника на данните. Следва типичният синтаксис за използване на оператора Drop върху таблица.
ПУСКАНЕ НА ТАБЛИЦА
Трябва просто да заменим името на таблицата, която искаме да премахнем от базата данни в горния пример на команда Drop.
Важно е да се отбележи, че командата Drop не може да се използва за изтриване на таблица, която вече е била посочена от ограничение на външен ключ. В този случай референтното ограничение за външен ключ или тази конкретна таблица трябва първо да бъдат премахнати. Освен това командата Drop не може да бъде приложена към системните таблици в базата данни.
Тъй като командата Drop е израз за автоматично ангажиране, веднъж задействаната операция не може да бъде върната назад и няма да бъдат задействани тригери. Когато една таблица бъде премахната, всички препратки към таблицата няма да бъдат валидни и така, ако искаме да използваме таблицата отново, тя трябва да бъде създадена отново с всички ограничения на целостта и привилегии за достъп. Всички релации с другите таблици също трябва да бъдат локализирани отново.
Команда за съкращаване
Командата Truncate е DDL команда и тя премахва всички редове в таблица без зададени от потребителя условия и освобождава пространството, използвано от таблицата, но структурата на таблицата с нейните колони, индекси и ограничения остават същите. Отрязването елиминира данни от таблица чрез освобождаване на страниците с данни, използвани за съхраняване на данните от таблицата, и само тези освобождавания на страници се съхраняват в регистрационния файл на транзакциите. Така че използва по-малко ресурси на регистъра на транзакциите и системни ресурси в сравнение с други свързани SQL команди като Delete. Така че Truncate е малко по-бърз оператор от други. Следва типичният синтаксис за командата Truncate.
ОТРЯЗВАНЕ НА ТАБЛИЦА
Трябва да заменим името на таблицата, от която искаме да премахнем всички данни, в горния синтаксис.
Truncate не може да се използва в таблица, която е била посочена от ограничение на външен ключ. Той използва автоматично ангажимент преди да действа и друг комит след това, така че връщането на транзакцията е невъзможно и не се задействат тригери. Ако искаме да използваме повторно таблицата, трябва само да имаме достъп до съществуващата дефиниция на таблица в базата данни.
Каква е разликата между Drop и Truncate?
И двете команди Drop и Truncate са DDL команди, а също и оператори за автоматично ангажиране, така че транзакциите, извършени с помощта на тези команди, не могат да бъдат върнати назад.
Основната разлика между Drop и Truncate е, че командата Drop премахва не само всички данни в таблица, но също така премахва структурата на таблицата за постоянно от базата данни с всички препратки, докато командата Truncate премахва само всички редовете в таблица и запазва структурата на таблицата и нейните препратки.
Ако дадена таблица бъде премахната, връзките с други таблици вече няма да бъдат валидни и ограниченията за целостта и привилегиите за достъп също ще бъдат премахнати. Така че, ако таблицата трябва да се използва повторно, тя трябва да бъде реконструирана с релациите, ограниченията на целостта, а също и привилегиите за достъп. Но ако дадена таблица е съкратена, структурата на таблицата и нейните ограничения остават за бъдеща употреба, така че нито едно от горните пресъздавания не е необходимо за повторно използване.
Когато се прилагат тези команди, трябва да бъдем внимателни при използването им. Освен това трябва да имаме по-добро разбиране за естеството на тези команди, как работят, както и внимателно планиране, преди да ги използваме, за да предотвратим пропускане на основни неща. И накрая, и двете команди могат да се използват за бързо и лесно почистване на базите данни, като се изразходват по-малко ресурси.