Smazat vs Zkrátit
Oba příkazy SQL (Structure Query Language), Delete a Truncate, se používají k odstranění dat uložených v tabulkách v databázi. Odstranit je příkaz DML (Data Manipulation Language) a odstraní některé nebo všechny řádky tabulky. Klauzule „Where“se používá k určení řádků, které se mají odstranit, a pokud se klauzule Where nepoužívá s příkazem Delete, odstraní všechna data z tabulky. Truncate je příkaz DDL (Data Definition Language), který z tabulky odstraní všechna data. Oba tyto příkazy nezničí strukturu tabulky a odkazy na tabulku a podle potřeby se odeberou pouze data.
Smazat výpis
Příkaz Delete umožňuje uživateli odstranit data z existující tabulky v databázi na základě zadané podmínky a pro určení této podmínky se používá klauzule „Where“. Příkaz Odstranit se označuje jako protokolované spuštění, protože odstraní pouze jeden řádek najednou a v záznamu transakcí zachová položku pro každé odstranění řádku. To tedy způsobí zpomalení operace. Odstranit je příkaz DML, a proto není automaticky potvrzen při provádění příkazu. Operaci Odstranit lze proto vrátit zpět, abyste v případě potřeby mohli znovu přistupovat k datům. Po provedení příkazu Odstranit by měl být potvrzen nebo vrácen zpět, aby se změny uložily trvale. Příkaz Odstranit neodstraní strukturu tabulky tabulky z databáze. Rovněž nepřiděluje paměťový prostor používaný tabulkou.
Typická syntaxe pro příkaz Odstranit je uvedena níže.
ODSTRANIT Z
nebo
ODSTRANIT ODKUD
Zkrácené prohlášení
Příkaz Zkrátit odstraní všechna data z existující tabulky v databázi, ale zachová stejnou strukturu tabulky, také omezení integrity, přístupová oprávnění a vztahy k jiným tabulkám. Není tedy nutné tabulku znovu definovat a lze použít starou strukturu tabulky, pokud chce uživatel tabulku znovu použít. Zkrácení odstraní celá data zrušením přidělení datových stránek použitých k uchování dat a v protokolu transakcí se uchovávají pouze tato přidělení stránek. Příkaz truncate proto pro provoz využívá pouze méně prostředků systému a protokolu transakcí, takže je rychlejší než jiné související příkazy. Truncate je příkaz DDL, takže používá automatické závazky před a po provedení příkazu. Zkrátit tedy nemůže žádným způsobem znovu vrátit data. Po provedení uvolňuje paměťový prostor používaný tabulkou. Příkaz Truncate ale nelze použít na tabulky, na které odkazují omezení cizího klíče.
Následuje běžná syntaxe příkazu Truncate.
ZKUŠEBNÍ STŮL
Jaký je rozdíl mezi Delete a Truncate? 1. Příkazy Delete and Truncate odstraní data z existujících tabulek v databázi, aniž by došlo k poškození struktury tabulky nebo jiných odkazů na tabulku. 2. Příkaz Odstranit však lze použít k odstranění konkrétních řádků pouze v tabulce s použitím příslušné podmínky nebo k odstranění všech řádků bez jakékoli podmínky, zatímco příkaz Zkrácení lze použít pouze k odstranění celých dat v tabulce. 3. Odstranit je příkaz DML a v případě potřeby může operaci vrátit zpět, ale Truncate je příkaz DDL, jedná se tedy o příkaz automatického potvrzení a nelze jej žádným způsobem vrátit zpět. Je tedy důležité při správě databáze tento příkaz používat opatrně. 4. Operace Zkrácení spotřebuje méně systémových prostředků a prostředků protokolu transakcí než operace Odstranit, proto se Zkrácení považuje za rychlejší než Odstranit. 5. Také funkce Delete nevydělává místo v tabulce, zatímco Truncate uvolní místo použité po provedení, takže funkce Delete není účinná v případě odstranění všech dat z tabulky databáze. 6. Zkrácení však není povoleno používat, když je na tabulku odkazováno omezením cizího klíče, a v takovém případě lze místo Zkrácení použít příkaz Odstranit. 7. Nakonec mají oba tyto příkazy výhody a nevýhody při jejich používání v systémech správy databází a uživatel by si měl být vědom toho, jak tyto příkazy vhodně používat, aby dosáhl dobrých výsledků. |