Smazat vs. zkrátit
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. Delete je příkaz DML (Data Manipulation Language) a odstraňuje některé nebo všechny řádky tabulky. Klauzule „Where“se používá k určení řádků, které je třeba odstranit, a pokud se klauzule Where nepoužívá s příkazem Delete, odstraní všechna data v tabulce. Truncate je příkaz DDL (Data Definition Language) a odstraňuje celá data z tabulky. Oba tyto příkazy nezničí strukturu tabulky a odkazy na tabulku a podle potřeby se odstraní 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 Delete se označuje jako protokolované provedení, protože odstraňuje vždy pouze jeden řádek a uchovává záznam pro každé odstranění řádku v protokolu transakcí. Takže to způsobuje zpomalení operace. Delete je příkaz DML, a proto není automaticky potvrzen při provádění příkazu. V případě potřeby lze proto operaci Delete vrátit zpět a získat tak znovu přístup k datům. Po provedení příkazu Delete by měl být potvrzen nebo vrácen zpět, aby se změny trvale uložily. Příkaz Delete neodstraní strukturu tabulky tabulky z databáze. Také neuvolňuje paměťový prostor používaný tabulkou.
Typická syntaxe příkazu Delete je uvedena níže.
SMAZAT Z
nebo
SMAZAT ODKUD
Truncate Statement
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á práva a vztahy k ostatním tabulkám. Není tedy nutné znovu definovat tabulku a lze použít starou strukturu tabulky, pokud chce uživatel tabulku znovu použít. Truncate odstraní celá data uvolněním datových stránek používaných k uchování dat a pouze tato uvolnění stránek jsou uchovávána v protokolu transakcí. Proto příkaz truncate využívá k provozu 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é potvrzení před a po provedení příkazu. Zkrátit tedy nemůže žádným způsobem vrátit data zpět. Po provedení uvolní paměťový prostor používaný tabulkou. Příkaz Truncate však nelze použít na tabulky, na které odkazují omezení cizího klíče.
Následuje běžná syntaxe příkazu Truncate.
ZKRÁTIT TABULKU
Jaký je rozdíl mezi Delete a Truncate?
1. Příkazy Delete a Truncate odstraní data z existujících tabulek v databázi bez poškození struktury tabulky nebo jiných odkazů na tabulku.
2. Příkaz Delete však lze použít k odstranění konkrétních řádků v tabulce pouze pomocí relevantní podmínky nebo k odstranění všech řádků bez jakékoli podmínky, zatímco příkaz Truncate lze použít pouze k odstranění celých dat v tabulce.
3. Delete je příkaz DML a v případě potřeby může vrátit operaci, ale Truncate je příkaz DDL, takže je to příkaz automatického potvrzení a nelze jej žádným způsobem vrátit zpět. Proto je důležité používat tento příkaz při správě databáze opatrně.
4. Operace zkrácení spotřebovává méně systémových prostředků a prostředků protokolu transakcí než operace mazání, proto je zkrácení považováno za rychlejší než Delete.
5. Funkce Delete také neuvolňuje místo používané tabulkou, zatímco funkce Truncate uvolňuje místo použité po spuštění, takže Delete není efektivní v případě smazání celých dat z databázové tabulky.
6. Zkrácení však nelze použít, pokud na tabulku odkazuje omezení cizího klíče, a v takovém případě lze místo příkazu Zkrátit použít příkaz Delete.
7. A konečně, oba tyto příkazy mají výhody a také nevýhody při jejich použití v systémech správy databází a uživatel by si měl být vědom toho, že tyto příkazy správně používá k dosažení dobrých výsledků.