Rozdiel medzi príkazmi DELETE a TRUNCATE je najbežnejšou súčasťou otázky na pohovore. Používajú sa najmä na vymazanie údajov z databázy. Hlavný rozdiel medzi nimi je v tom, že príkaz delete vymaže údaje bez resetovania identity tabuľky, zatiaľ čo príkaz truncate resetuje identitu konkrétnej tabuľky. . Tento článok vysvetľuje úplný prehľad príkazov DELETE a TRUNCATE a ich rozdiely, ktoré sa primárne používajú zameniteľne, ale sú úplne odlišné.
Čo je príkaz DELETE?
Je to a DML alebo príkaz na manipuláciu s údajmi slúži na vymazanie záznamov z tabuľky, ktoré sa v databáze nevyžadujú. Odstráni celý riadok z tabuľky a vytvorí počet odstránených riadkov. Na vykonanie tohto príkazu potrebujeme povolenie na odstránenie na cieľovej tabuľke. Umožňuje nám tiež filtrovať a mazať akékoľvek konkrétne záznamy pomocou KDE doložka zo stola.
Objasňuje, že pred vykonaním tohto príkazu máme zálohu našej databázy, pretože pomocou tohto dotazu nemôžeme obnoviť odstránené záznamy. Preto, zálohy databázy nám umožňujú obnoviť údaje, kedykoľvek ich v budúcnosti budeme potrebovať.
Nasledujúca syntax vysvetľuje príkaz DELETE na odstránenie údajov z tabuľky:
DELETE FROM table_name WHERE condition;
Čo je to príkaz TRUNCATE?
Príkaz skrátenia je a DDL alebo príkaz jazyka definície údajov slúži na odstránenie úplných údajov z tabuľky bez odstránenia štruktúry tabuľky. Nemôžeme použiť KDE klauzulu s týmto príkazom, takže filtrovanie záznamov nie je možné. Po vykonaní tohto príkazu sme nie je možné vrátiť späť odstránené údaje pretože protokol sa neuchováva počas vykonávania tejto operácie.
Príkaz truncate uvoľní miesto strany namiesto riadkov a vytvorí záznam pre uvoľňujúce stránky namiesto riadkov v protokoloch transakcií. Tento príkaz uzamkne stránky namiesto riadkov; preto vyžaduje menej zámkov a zdrojov. Všimnite si, že príkaz skrátenia nemôžeme použiť, keď na tabuľku odkazuje cudzí kľúč alebo keď sa zúčastňuje indexovaného zobrazenia.
prázdny zoznam java
Nasledujúca syntax vysvetľuje príkaz TRUNCATE na odstránenie údajov z tabuľky:
TRUNCATE TABLE table_name;
Hlavné rozdiely medzi DELETE a TRUNCATE
Nasledujúce body vysvetľujú rozdiely medzi príkazmi delete a skrátenie:
- Príkaz DELETE sa používa, keď chceme odstrániť niektoré alebo všetky záznamy z tabuľky, zatiaľ čo príkaz TRUNCATE vymaže celé riadky z tabuľky.
- DELETE je príkaz DML, pretože upravuje iba údaje tabuľky, zatiaľ čo TRUNCATE je príkaz DDL.
- Príkaz DELETE môže filtrovať záznam/dvojice pomocou klauzuly WHERE. Príkaz TRUNCATE však neumožňuje použitie KDE klauzulu, takže pri skracovaní nemôžeme filtrovať riadky.
- DELETE aktivuje všetky odstrániť spúšťače na stôl vypáliť. Pri operácii skrátenia sa však nespustia žiadne spúšťače, pretože nefunguje v jednotlivých riadkoch.
- DELETE vykoná vymazanie riadok po riadku jeden po druhom z tabuľky v poradí, v akom boli spracované. TRUNCATE však funguje na dátových stránkach namiesto riadkov, pretože vymazal celé údaje tabuľky naraz.
- Príkaz DELETE vymaže iba záznamy a neresetuje identita tabuľky , zatiaľ čo TRUNCATE resetuje identitu konkrétnej tabuľky.
- Príkaz DELETE vyžaduje viac zámkov a databázových prostriedkov, pretože získava zámok na každom vymazanom riadku. Na rozdiel od toho TRUNCATE získa zámok na dátovej stránke pred odstránením dátovej stránky; preto vyžaduje menej zámkov a málo zdrojov.
- Príkaz DELETE urobí záznam v denník transakcií pre každý odstránený riadok, zatiaľ čo TRUNCATE zaznamenáva protokol transakcií pre každú stránku s údajmi.
- Príkaz TRUNCATE je rýchlejšie než príkaz DELETE, pretože uvoľňuje dátové stránky namiesto riadkov a zaznamenáva dátové stránky namiesto riadkov v protokoloch transakcií.
- Po odstránení záznamu pomocou príkazu TRUNCATE ho už nemôžeme obnoviť. Na rozdiel od toho môžeme obnoviť vymazané údaje, ktoré sme odstránili z operácie DELETE.
Porovnávacia tabuľka DELETE vs. TRUNCATE
Nasledujúca porovnávacia tabuľka rýchlo vysvetľuje ich hlavné rozdiely:
Základ porovnania | VYMAZAŤ | TRUNCATE (skrátiť). |
---|---|---|
Definícia | Príkaz delete sa používa na odstránenie jedného alebo viacerých záznamov z existujúcej tabuľky v závislosti od špecifikovanej podmienky. | Príkaz truncate odstráni kompletné údaje z existujúcej tabuľky, ale nie tabuľku samotnú. Zachováva štruktúru tabuľky alebo schému. |
Jazyk | Ide o príkaz DML (Data Manipulation Language). | Ide o príkaz DDL (Data Definition Language). |
KDE | Môže použiť klauzulu WHERE na filtrovanie akéhokoľvek konkrétneho riadka alebo údajov z tabuľky. | Na filtrovanie záznamov z tabuľky nepoužíva klauzulu WHERE. |
Povolenie | Na použitie tohto príkazu potrebujeme povolenie DELETE. | Na použitie tohto príkazu potrebujeme mať povolenie ALTER. |
Pracovné | Tento príkaz odstraňuje záznamy jeden po druhom. | Tento príkaz vymaže celú dátovú stránku obsahujúcu záznamy. |
Zámok | Pred odstránením riadok uzamkne. | Pred odstránením sa stránka s údajmi uzamkne. |
Identita tabuľky | Tento príkaz neresetuje identitu tabuľky, pretože vymaže iba údaje. | Vždy resetuje identitu tabuľky. |
Transakcia | Spravuje protokoly transakcií pre každý odstránený záznam. | Neuchováva protokoly transakcií pre každú stránku s odstránenými údajmi. |
Rýchlosť | Jeho rýchlosť je nízka, pretože udržiaval denník. | Jeho vykonávanie je rýchle, pretože vymazáva celé údaje naraz bez udržiavania protokolov transakcií. |
Spúšťač | Tento príkaz môže tiež aktivovať spúšť aplikovanú na stôl a spôsobiť ich spustenie. | Tento príkaz neaktivuje spúšťače použité na spustenie na stole. |
Obnoviť | Umožňuje nám obnoviť vymazané údaje pomocou príkazu COMMIT alebo ROLLBACK. | Po vykonaní tohto príkazu nie je možné obnoviť odstránené údaje. |
Indexované zobrazenie | Dá sa použiť s indexovanými zobrazeniami. | Nedá sa použiť s indexovanými zobrazeniami. |
Priestor | Príkaz DELETE zaberá viac transakčného priestoru ako skrátenie, pretože uchováva protokol pre každý odstránený riadok. | Príkaz TRUNCATE zaberá menej transakčného priestoru, pretože uchováva protokol transakcií pre celú údajovú stránku namiesto každého riadka. |
Záver
V tomto článku sme porovnali príkaz delete a skrátenie. Dospeli sme k záveru, že príkaz DELETE sa používa, keď chceme prispôsobiť odstraňovanie záznamov z tabuľky. A príkaz TRUNCATE sa používa, keď nechceme ponechať žiadne záznamy alebo údaje v tabuľke, t. j. chceme tabuľku vyprázdniť.