Odporúčaná, 2020

Redakcia Choice

Rozdiel medzi DELETE a TRUNCATE v SQL

DELETE a TRUNCATE sú príkazy používajúce na odstránenie nuplín z vzťahu, ale líšia sa v mnohých kontextoch. V príkaze SQL je príkaz DELETE príkazom Data Manipulation Language, zatiaľ čo príkaz TRUNCATE je príkaz Data Definition Language . Avšak bod, ktorý nám umožňuje rozlišovať medzi DELETE a TRUNCATE, je, že DELETE je schopný odstrániť špecifikované n-tiny z vzťahu, Zatiaľ čo príkaz TRUNCATE odstráni celé n-tiny z vzťahu.

nemali by sme sa tu zastaviť, existuje veľa ďalších rozdielov medzi DELETE a TRUNCATE. Prediskutujte ich pomocou porovnávacej tabuľky uvedenej nižšie.

Porovnávacia tabuľka

Základ pre porovnanieDELETESKRÁTIŤ
základnéMôžete určiť n-ticu, ktorú chcete odstrániť.Vymaže všetky n-tiny zo vzťahu.
JazykDELETE je príkaz Language Data Manipulation Language.TRUNCATE je príkaz jazyka pre definíciu dát.
KDEPríkaz DELETE môže mať klauzulu WHERE.Príkaz TRUNCATE nemá klauzulu WHERE.
spúšťPríkaz DELETE aktivuje spúšť na stole a spôsobí ich požiar.Príkaz TRUNCATE neaktivuje spúšťače.
vymazaniePríkaz DELETE eliminuje jednotlivé čísla.TRUNCATE odstráňte celú stránku s údajmi obsahujúcou n-tice.
zamknúťOdoslať príkaz DELETE zamknúť riadok / tuple pred odstránením.Po odstránení údajov tabuľky zadajte príkaz TRUNCATE.
rýchlosťPríkaz DELETE pôsobí pomalšie v porovnaní s TRUNCATE.TRUNCATE je rýchlejší v porovnaní s DELETE.
transakcieDELETE zaznamenáva protokol transakcií pre každú vymazanú n-ticku.Zaznamenajte protokol transakcií záznamu TRUNCATE pre každú stránku s odstránenými údajmi.
obnoviťPríkaz DELETE môže byť sledovaný COMMIT alebo ROLLBACK.Príkaz TRUNCATE nemôže byť ROLLBACK.

Definícia DELETE

DELETE je príkaz jazyka DML ( Data Manipulation Language ). Úlohou príkazu DELETE je odstrániť alebo odstrániť n-tice z tabuľky alebo vzťahu. Pomocou funkcie DELETE dokážeme odstrániť celú n-tiku, pričom všetky jej hodnoty atribútov sú vzťahové. DELETE neodstráni hodnotu konkrétneho atribútu novej množiny vzťahu.

Môžete filtrovať nuly, ktoré chcete odstrániť z tabuľky, pomocou klauzuly WHERE . Ak zadáte klauzulu WHERE v príkaze DELETE, vymaže sa iba tzv. Nupy, ktoré spĺňajú podmienky klauzuly WHERE. Ak však neurčíte klauzulu WHERE v príkaze DELETE, potom predvolene vymaže alebo odstráni všetky n-tiny z vzťahu. Každá klauzula v príkaze DELETE môže obsahovať vnorené príkazy SELECT-FROM-WHERE .

Syntax príkazu DELETE je nasledovný:

DELETE z table_name WHERE [ podmienka ];

Príkaz DELETE funguje iba v jednom pomere alebo v tabuľke naraz. V prípade, že chcete odstrániť n-tia z rôznych vzťahov, musíte pre každý z nich zadávať iný príkaz DELETE. Ale odstránenie n-tice z jedného vzťahu môže porušiť referenčnú integritu databázy, ktorú je možné vyriešiť pomocou triggerov. Ak príkaz DELETE poruší referenčnú integritu, aktivuje sa všetky referenčné spúšťače (ak sú zadané), ktoré šíria akciu vymazávania na n-ticách iného vzťahu, ktoré odkazujú na vymazané n-tice.

Zrušiť príkaz DELETE najskôr uzamknúť riadok alebo n-tia, ktoré chcete vymazať, a potom odstrániť n - ticu jednotlivo . Z tohto dôvodu si vyžaduje viac zámkov a zdrojov, ktoré znižujú ich mieru . Zmeny vykonané pomocou príkazu DELETE môžete vykonať pomocou nástroja COMMIT, alebo môžete databázu obnoviť pomocou funkcie ROLLBACK .

Definícia TRUNCATE

TRUNCATE je podobný príkazu DELETE, pretože tiež vymaže nupky z vzťahu. Rozdiel spočíva v tom, že vymaže celú n-ticu zo vzťahu. Po vykonaní príkazu TRUNCATE sa odstránia celé dáta z tabuľky, každá n-tava spolu so všetkými hodnotami atribútu sa vylúčia z tabuľky. Štruktúra tabuľky však stále existuje v databáze. Takže môžete znova zadať n-tice do tabuľky. TRUNCATE je príkaz jazyka pre definíciu dát.

Syntax príkazu TRUNCATE je nasledovný:

TRUNCATE TABLE table_name ;

Rovnako ako DELETE, TRUNCATE nefunguje na údajoch tabuľky riadok po riadku. Namiesto toho funguje na údajových stránkach, ktoré ukladajú údaje tabuľky. Teraz, keď TRUNCATE odstrániť dátové stránky, musí získať zámok na údajových stránkach namiesto n-tíc. Z toho dôvodu dochádza k menšej potrebe zámkov a prostriedkov, ktoré spôsobujú, že TRUNCATE je rýchlejšie ako v prípade DELETE.

Spúšťanie príkazu TRUNCATE neaktivuje žiadne spúšťače, pretože nespúšťa dáta riadok po riadku. Funkcia TRUNCATE sa nedá spustiť v prípade, že sa na tabuľku odkazuje akýkoľvek cudzí kľúč . Po príkaze TRUNCATE sa dáta tabuľky vymažú, nikdy sa nedajú vrátiť späť.

Kľúčové rozdiely medzi DELETE a TRUNCATE v SQL

  1. Hlavným rozdielom medzi DELETE a TRUNCATE je to, že použitím DELETE môžete odstrániť špecifikovanú n-tiku z vzťahu. Použitie nástroja TRUNCATE však vymaže celé vzťahy.
  2. DELETE je príkaz DML, zatiaľ čo TRUNCATE je príkaz DDL.
  3. Funkcia DELETE používa klauzulu WHERE na filtrovanie záznamov / n-tiel, ktoré sa majú vymazať. TRUNCATE však nevyžaduje klauzulu WHERE, pretože vymaže všetky n-tice, takže nie je potrebné filtrovať n-tice.
  4. DELETE aktivuje referenčné spúšťače aplikované na tabuľky. Ale TRUNCATE nezapne žiadne spúšťače na stole.
  5. Príkaz DELETE vylúči z tabuľky n-tice, v poradí sa spracujú. Funkcia TRUNCATE však nefunguje na nuplách jeden po druhom. Namiesto toho TRUNCATE pracuje na údajovej stránke, ktorá ukladá údaje tabuľky.
  6. DELETE získať zámok na novej jednotke pred jej vymazaním, zatiaľ čo TRUNCATE získa zámok na dátovej stránke pred vymazaním dátovej stránky.
  7. TRUNCATE je rýchlejší v porovnaní s príkazom DELETE.
  8. DELETE protokol transakcie záznamov pre každú n-tú, zatiaľ čo TRUNCATE zaznamená protokol transakcií pre každú dátovú stránku.
  9. Po odstránení údajov pomocou nástroja TRUNCATE sa nemôže nikdy vrátiť späť, zatiaľ čo môžete obnoviť dáta späť, ktoré ste odstránili pomocou príkazu DELETE.

záver:

Ak chcete upraviť vymazanie záznamov z tabuľky, môžete použiť príkaz DELETE. Ak chcete vyprázdniť tabuľku, tj nechcete nechať žiadne údaje v tabuľke, použite príkaz TRUNCATE.

Top