Skirtumas tarp komandų DELETE ir TRUNCATE yra dažniausia interviu klausimo dalis. Jie daugiausia naudojami duomenims iš duomenų bazės ištrinti. Pagrindinis skirtumas tarp jų yra tas, kad trynimo sakinys ištrina duomenis nenustatęs lentelės tapatybės iš naujo, o komanda sutrumpina konkrečios lentelės tapatybę. . Šiame straipsnyje paaiškinama visa komandų DELETE ir TRUNCATE apžvalga ir jų skirtumai, kurie pirmiausia naudojami pakaitomis, bet yra visiškai skirtingi.
Kas yra DELETE komanda?
Tai yra DML arba duomenų manipuliavimo komanda naudojamas ištrinti įrašus iš lentelės, kuri nėra būtina duomenų bazėje. Jis pašalina visą eilutę iš lentelės ir sukuria ištrintų eilučių skaičių. Mums reikia leidimo ištrinti tikslinę lentelę, kad galėtume vykdyti šią komandą. Tai taip pat leidžia mums filtruoti ir ištrinti bet kokius konkrečius įrašus naudojant KUR punktas iš lentelės.
Tai paaiškina, kad prieš vykdydami šią komandą turime atsarginę duomenų bazės kopiją, nes negalime atkurti ištrintų įrašų naudodami šią užklausą. Todėl, duomenų bazės atsarginės kopijos Leiskite mums atkurti duomenis, kai tik jų prireiks ateityje.
Ši sintaksė paaiškina komandą DELETE, skirtą duomenims iš lentelės pašalinti:
DELETE FROM table_name WHERE condition;
Kas yra TRUNCATE komanda?
Sutrumpintas teiginys yra a DDL arba duomenų apibrėžimo kalbos komanda naudojamas pašalinti visus duomenis iš lentelės nepašalinant lentelės struktūros. Negalime naudoti KUR sąlygą su šia komanda, kad nebūtų galima filtruoti įrašų. Įvykdę šią komandą, mes negali grąžinti ištrintų duomenų nes atliekant šią operaciją žurnalas netvarkomas.
Sutrumpinti komanda atlaisvina puslapiai vietoj eilučių ir padaro įrašą paskirstymo puslapiams, o ne eilėms operacijų žurnaluose. Ši komanda užrakina puslapius, o ne eilutes; taigi tam reikia mažiau spynų ir išteklių. Atminkite, kad negalime naudoti sutrumpinto teiginio, kai lentelė nurodoma išoriniu raktu arba dalyvauja indeksuotame rodinyje.
git pull sintaksė
Ši sintaksė paaiškina komandą TRUNCATE, skirtą duomenims iš lentelės pašalinti:
TRUNCATE TABLE table_name;
Pagrindiniai skirtumai tarp DELETE ir TRUNCATE
Šie punktai paaiškina skirtumus tarp trynimo ir sutrumpinimo komandų:
- Teiginys DELETE naudojamas, kai norime pašalinti kai kuriuos arba visus įrašus iš lentelės, o sakinys TRUNCATE ištrins visas lentelės eilutes.
- DELETE yra DML komanda, nes ji keičia tik lentelės duomenis, o TRUNCATE yra DDL komanda.
- DELETE komanda gali filtruoti įrašą / eilutes naudodama WHERE sąlygą. Tačiau komanda TRUNCATE neleidžia naudoti KUR sąlygą, todėl trumpindami eilučių filtruoti negalime.
- DELETE suaktyvina visus ištrinti trigerius ant stalo ugniai. Tačiau sutrumpinimo operacija nesuaktyvinama, nes ji neveikia atskirose eilutėse.
- DELETE iš lentelės ištrina eilutę po eilės tokia tvarka, kokia jie buvo apdoroti. Tačiau TRUNCATE veikia duomenų puslapiuose, o ne eilutėse, nes vienu metu ištrynė visus lentelės duomenis.
- Pareiškimas DELETE tik ištrina įrašus ir nenustato iš naujo lentelės tapatybę , o TRUNCATE iš naujo nustato konkrečios lentelės tapatybę.
- DELETE komandai reikia daugiau užraktų ir duomenų bazės išteklių, nes ji įgyja užraktą kiekvienoje ištrintoje eilutėje. Priešingai, TRUNCATE įgyja duomenų puslapio užraktą prieš ištrinant duomenų puslapį; taigi tam reikia mažiau spynų ir nedaug išteklių.
- Pareiškimas DELETE padaro įrašą operacijų žurnalas kiekvienai ištrintai eilutei, o TRUNCATE įrašo kiekvieno duomenų puslapio operacijų žurnalą.
- TRUNCATE komanda yra greičiau nei komanda DELETE, nes ji panaikina duomenų puslapius, o ne eilutes, o operacijų žurnaluose įrašo duomenų puslapius, o ne eilutes.
- Kai įrašas ištrinamas naudojant komandą TRUNCATE, negalime jo atkurti. Priešingai, mes galime atkurti ištrintus duomenis, kuriuos pašalinome iš DELETE operacijos.
DELETE ir TRUNCATE palyginimo diagrama
Šioje palyginimo lentelėje greitai paaiškinami pagrindiniai jų skirtumai:
Palyginimo pagrindas | IŠTRINTI | Sutrumpinti |
---|---|---|
Apibrėžimas | Ištrynimo sakinys naudojamas pašalinti vieną ar kelis įrašus iš esamos lentelės, atsižvelgiant į nurodytą sąlygą. | Sutrumpinimo komanda pašalina visus duomenis iš esamos lentelės, bet ne iš pačios lentelės. Tai išsaugo lentelės struktūrą arba schemą. |
Kalba | Tai DML (Data Manipulation Language) komanda. | Tai DDL (duomenų apibrėžimo kalba) komanda. |
KUR | Jis gali naudoti WHERE sąlygą, kad išfiltruotų bet kurią konkrečią lentelės eilutę ar duomenis. | Įrašams iš lentelės filtruoti nenaudojama sąlyga WHERE. |
Leidimas | Norėdami naudoti šią komandą, turime turėti DELETE leidimą. | Turime turėti ALTER leidimą naudoti šią komandą. |
Darbas | Ši komanda pašalina įrašus po vieną. | Ši komanda ištrina visą duomenų puslapį, kuriame yra įrašai. |
Užraktas | Prieš ištrinant, eilutė bus užrakinta. | Prieš ištrinant, duomenų puslapis bus užrakintas. |
Lentelės tapatybė | Ši komanda nenustato lentelės tapatybės iš naujo, nes ji tik ištrina duomenis. | Tai visada iš naujo nustato lentelės tapatybę. |
Sandoris | Jis tvarko kiekvieno ištrinto įrašo operacijų žurnalus. | Jis netvarko kiekvieno ištrintų duomenų puslapio operacijų žurnalų. |
Greitis | Jo greitis lėtas, nes išlaikė žurnalą. | Jo vykdymas yra greitas, nes vienu metu buvo ištrinti visi duomenys, netvarkant operacijų žurnalų. |
Trigeris | Ši komanda taip pat gali suaktyvinti lentelėje taikomą paleidiklį ir sukelti jų suaktyvinimą. | Ši komanda nesuaktyvina lentelėje taikomų trigerių, kad suaktyvintų. |
Atkurti | Tai leidžia mums atkurti ištrintus duomenis naudojant COMMIT arba ROLLBACK teiginį. | Vykdę šią komandą negalime atkurti ištrintų duomenų. |
Indeksuotas vaizdas | Jis gali būti naudojamas su indeksuotais rodiniais. | Jo negalima naudoti su indeksuotais rodiniais. |
Erdvė | Teiginys DELETE užima daugiau operacijos vietos nei sutrumpintas, nes tvarko kiekvienos ištrintos eilutės žurnalą. | Teiginys TRUNCATE užima mažiau operacijų vietos, nes tvarko viso duomenų puslapio operacijų žurnalą, o ne kiekvieną eilutę. |
Išvada
Šiame straipsnyje palyginome trynimo ir sutrumpinimo teiginius. Padarėme išvadą, kad komanda DELETE naudojama, kai norime tinkinti įrašų ištrynimą iš lentelės. O komanda TRUNCATE naudojama tada, kai nenorime lentelėje palikti jokių įrašų ar duomenų, t.y., norime ištuštinti lentelę.