Rozdíl mezi příkazy DELETE a TRUNCATE je nejběžnější částí otázky na pohovoru. Používají se především k vymazání dat z databáze. Hlavní rozdíl mezi nimi je v tom, že příkaz delete smaže data bez resetování identity tabulky, zatímco příkaz truncate resetuje identitu konkrétní tabulky. . Tento článek vysvětluje úplný přehled příkazů DELETE a TRUNCATE a jejich rozdíly, které se primárně používají zaměnitelně, ale jsou zcela odlišné.
Co je příkaz DELETE?
Je to a DML nebo příkaz pro manipulaci s daty slouží k odstranění záznamů z tabulky, které nejsou vyžadovány v databázi. Odebere celý řádek z tabulky a vytvoří počet odstraněných řádků. K provedení tohoto příkazu potřebujeme oprávnění k odstranění na cílové tabulce. Umožňuje nám také filtrovat a mazat jakékoli konkrétní záznamy pomocí KDE klauzule ze stolu.
Vyjasňuje, že před provedením tohoto příkazu máme zálohu naší databáze, protože pomocí tohoto dotazu nemůžeme obnovit smazané záznamy. Proto, zálohy databáze nám umožňují obnovit data, kdykoli je v budoucnu budeme potřebovat.
Následující syntaxe vysvětluje příkaz DELETE k odstranění dat z tabulky:
DELETE FROM table_name WHERE condition;
Co je příkaz TRUNCATE?
Příkaz zkrácení je a DDL nebo příkaz jazyka pro definici dat slouží k odstranění úplných dat z tabulky bez odstranění struktury tabulky. Nemůžeme použít KDE klauzule s tímto příkazem, takže filtrování záznamů není možné. Po provedení tohoto příkazu jsme nelze vrátit smazaná data protože protokol není udržován při provádění této operace.
Příkaz truncate uvolní alokaci stránky místo řádků a vytvoří záznam pro uvolnitelné stránky namísto řádků v protokolech transakcí. Tento příkaz zamkne stránky místo řádků; vyžaduje tedy méně zámků a prostředků. Všimněte si, že příkaz truncate nemůžeme použít, když na tabulku odkazuje cizí klíč nebo se účastní indexovaného pohledu.
co je $home linux
Následující syntaxe vysvětluje příkaz TRUNCATE k odstranění dat z tabulky:
TRUNCATE TABLE table_name;
Klíčové rozdíly mezi DELETE a TRUNCATE
Následující body vysvětlují rozdíly mezi příkazy delete a trucate:
- Příkaz DELETE se používá, když chceme odstranit některé nebo všechny záznamy z tabulky, zatímco příkaz TRUNCATE odstraní celé řádky z tabulky.
- DELETE je příkaz DML, protože pouze upravuje data tabulky, zatímco TRUNCATE je příkaz DDL.
- Příkaz DELETE může filtrovat záznam/dvojice pomocí klauzule WHERE. Příkaz TRUNCATE však použití neumožňuje KDE klauzule, takže při ořezávání nemůžeme filtrovat řádky.
- DELETE aktivuje vše smazat spouštěče na stůl vypálit. Při operaci zkrácení se však nespouštějí žádné spouštěče, protože nepracuje na jednotlivých řádcích.
- DELETE provádí mazání řádek po řádku jeden po druhém z tabulky v pořadí, v jakém byly zpracovány. Funkce TRUNCATE však pracuje na datových stránkách namísto řádků, protože smazala celá data tabulky najednou.
- Příkaz DELETE pouze vymaže záznamy a neresetuje identitu tabulky , zatímco TRUNCATE resetuje identitu konkrétní tabulky.
- Příkaz DELETE vyžaduje více zámků a prostředků databáze, protože získává zámek na každém odstraněném řádku. Naproti tomu TRUNCATE získá zámek na datové stránce před odstraněním datové stránky; vyžaduje tedy méně zámků a málo prostředků.
- Příkaz DELETE provede záznam v transakční protokol pro každý odstraněný řádek, zatímco TRUNCATE zaznamenává protokol transakcí pro každou datovou stránku.
- Příkaz TRUNCATE je rychlejší než příkaz DELETE, protože uvolňuje datové stránky místo řádků a zaznamenává datové stránky místo řádků v protokolech transakcí.
- Jakmile záznam smažete pomocí příkazu TRUNCATE, nemůžeme jej obnovit zpět. Naproti tomu můžeme obnovit smazaná data, která jsme odstranili z operace DELETE.
Srovnávací tabulka DELETE vs. TRUNCATE
Následující srovnávací tabulka rychle vysvětluje jejich hlavní rozdíly:
Srovnávací základ | VYMAZAT | ZKRÁTIT |
---|---|---|
Definice | Příkaz delete se používá k odstranění jednoho nebo více záznamů z existující tabulky v závislosti na zadané podmínce. | Příkaz truncate odstraní z existující tabulky kompletní data, ale ne samotnou tabulku. Zachová strukturu tabulky nebo schéma. |
Jazyk | Je to příkaz DML (Data Manipulation Language). | Je to příkaz DDL (Data Definition Language). |
KDE | Může použít klauzuli WHERE k filtrování jakéhokoli konkrétního řádku nebo dat z tabulky. | K filtrování záznamů z tabulky nepoužívá klauzuli WHERE. |
Povolení | K použití tohoto příkazu potřebujeme mít oprávnění DELETE. | K použití tohoto příkazu potřebujeme mít oprávnění ALTER. |
Pracovní | Tento příkaz odstraňuje záznamy jeden po druhém. | Tento příkaz odstraní celou datovou stránku obsahující záznamy. |
Zámek | Před odstraněním řádek uzamkne. | Před vymazáním dojde k uzamčení datové stránky. |
Identita tabulky | Tento příkaz neresetuje identitu tabulky, protože pouze odstraní data. | Vždy resetuje identitu tabulky. |
Transakce | Udržuje protokoly transakcí pro každý odstraněný záznam. | Neuchovává protokoly transakcí pro každou smazanou datovou stránku. |
Rychlost | Jeho rychlost je pomalá, protože udržuje log. | Jeho provádění je rychlé, protože maže celá data najednou bez udržování transakčních protokolů. |
Spoušť | Tento příkaz může také aktivovat spoušť aplikovanou na stůl a způsobit jejich spuštění. | Tento příkaz neaktivuje spouštěče použité na stole ke spuštění. |
Obnovit | Umožňuje nám obnovit smazaná data pomocí příkazu COMMIT nebo ROLLBACK. | Po provedení tohoto příkazu nelze smazaná data obnovit. |
Indexované zobrazení | Lze jej použít s indexovanými pohledy. | Nelze jej použít s indexovanými pohledy. |
Prostor | Příkaz DELETE zabírá více transakčního prostoru než zkrácení, protože udržuje protokol pro každý odstraněný řádek. | Příkaz TRUNCATE zabírá méně transakčního prostoru, protože udržuje protokol transakcí pro celou datovou stránku namísto každého řádku. |
Závěr
V tomto článku jsme provedli srovnání mezi příkazem delete a trucate. Došli jsme k závěru, že příkaz DELETE se používá, když chceme upravit mazání záznamů z tabulky. A příkaz TRUNCATE se používá, když nechceme ponechat v tabulce žádné záznamy nebo data, tj. chceme tabulku vyprázdnit.