Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp DELETE ir TRUNCATE SQL

„DELETE“ ir „TRUNCATE“ yra komandos, kuriomis pašalinamos paketos iš santykio, tačiau jos skiriasi daugeliu atvejų. SQL, komanda DELETE yra duomenų tvarkymo kalbos komanda, o komanda TRUNCATE yra Data Definition Language komanda. Tačiau taškas, leidžiantis atskirti DELETE ir TRUNCATE, yra tai, kad DELETE gali pašalinti nurodytas sekas iš santykio, kadangi, TRUNCATE komanda pašalina visas eilutes iš santykio.

neturėtume sustoti čia, yra daug kitų skirtumų tarp „DELETE“ ir „TRUNCATE“. Aptarkime juos žemiau pateiktoje palyginimo diagramoje.

Palyginimo diagrama

Palyginimo pagrindasIŠTRINTITRUNCATE
PagrindinisGalite nurodyti, kurią eilutę norite ištrinti.Jis ištrina visus ryšius iš santykio.
KalbaDELETE yra duomenų tvarkymo kalbos komanda.TRUNCATE yra komanda Data Definition Language.
KURKomandoje DELETE gali būti WHERE sąlyga.Komanda TRUNCATE neturi WHERE sąlygos.
Trigger„DELETE“ komanda suaktyvina stalui taikomą paleidiklį ir sukelia juos į ugnį.„TRUNCATE“ komanda neįsijungia gaisro paleidimo.
Ištrinimas„DELETE“ komanda pašalina vienetus po vieną.TRUNCATE ištrina visą duomenų lapą, kuriame yra sekos.
UžrakintiPrieš ištrindama komandą DELETE užrakina eilutę / eilutę.TRUNCATE komandų užrakinimo duomenų puslapis prieš ištrinant lentelės duomenis.
Greitis„DELETE“ komanda veikia lėčiau, palyginti su TRUNCATE.TRUNCATE yra greitesnis, palyginti su DELETE.
SandorisDELETE įrašo kiekvienos ištrintos eilutės sandorių žurnalą.TRUNCATE įrašo kiekvieno ištrinto duomenų puslapio sandorių žurnalą.
Atkurti„DELETE“ komandą gali sekti „COMMIT“ arba „ROLLBACK“.TRUNCATE komanda negali būti ROLLBACK.

DELETE apibrėžimas

„DELETE“ yra duomenų apdorojimo kalbos (DML) komanda. Komandos DELETE užduotis yra ištrinti ar pašalinti lenteles iš stalo ar ryšio. Naudodami DELETE, mes galime pašalinti visą paketą, su visomis jo reikšmėmis iš santykio. DELETE nepašalina konkretaus atributo vertės, nuo koreliacijos.

Naudodami WHERE sąlygą galite filtruoti rinkmenas, kurias norite ištrinti iš lentelės. Jei DELETE pareiškime nurodote WHERE sąlygą, tada ji ištrins tik WHERE sąlygos sąlygas atitinkančias paketas. Bet jei nenurodote WHERE sąlygos DELETE pareiškime, tada pagal nutylėjimą ji ištrina arba pašalina visus ryšius iš santykio. WHERE pareiškime esančioje nuostatoje gali būti įterpti SELECT-FROM-WHERE pareiškimai.

Komandos DELETE sintaksė yra tokia:

DELETE FROM table_name KUR [ conditon ];

„DELETE“ komanda vienu metu veikia tik vienu ryšiu arba lentelėje. Tuo atveju, jei norite ištrinti iš skirtingų santykių, kiekvienai iš jų turite skirtingą DELETE komandą. Bet ištrinant įrašą iš vieno santykio, gali būti pažeistas duomenų bazės referencinis vientisumas, kurį galima išspręsti naudojant trigerius. Jei komanda DELETE pažeidžia referencinį vientisumą, tada įjungiami visi referenciniai trigeriai (jei nurodyti), kurie skleidžia pašalinimo veiksmą skirtingų santykių eilutėse, nurodančiose ištrintas eilutes.

„DELETE“ komanda pirmiausia užblokuoja ištrinamą eilutę arba eilutę, o po to ištrinkite eilutę po vieną . Vadinasi, tam reikia daugiau spynų ir išteklių, dėl kurių jis lėtesnis . DELETE ataskaitoje padarytus pakeitimus galite padaryti nuolat naudojant COMMIT, arba galite iš naujo nustatyti duomenų bazę naudodami ROLLBACK .

TRUNCATE apibrėžimas

TRUNCATE yra panaši į komandą DELETE, nes ji taip pat pašalina eilutes iš santykio. Skirtumas yra tas, kad ji ištrina visą eilę iš santykio. Kai vykdoma komanda TRUNCATE, iš lentelės ištrinami visi duomenys, kiekviena eilutė kartu su visomis jo atributų reikšmėmis pašalinama iš lentelės. Tačiau lentelės struktūra vis dar yra duomenų bazėje. Taigi, galite vėl įvesti eilutes į lentelę. TRUNCATE yra komanda Data Definition Language.

Komandos TRUNCATE sintaksė yra tokia:

TRUNCATE TABLE table_name ;

Kaip ir DELETE, TRUNCATE neveikia lentelės duomenų eilutėje. Vietoj to jis veikia duomenų puslapiuose, kuriuose saugomi lentelės duomenys. Dabar, kai TRUNCATE ištrina duomenų puslapius, ji turi įsigyti duomenų lapų užraktą vietoj paketų. Vadinasi, mažesnis reikalavimas užrakinti ir ištekliai, dėl kurių TRUNCATE yra greitesnis nei DELETE.

Komandos „TRUNCATE“ vykdymas neįjungia jokių paleidiklių, nes juose nėra eilės duomenų. TRUNCATE negali būti įvykdyta, jei lentelę nurodo bet koks užsienio raktas . Kai komanda TRUNCATE ištrina lentelės duomenis, ji niekada negali būti atkurta .

Pagrindiniai skirtumai tarp DELETE ir TRUNCATE SQL

  1. Pagrindinis skirtumas tarp „DELETE“ ir „TRUNCATE“ yra tai, kad naudojant „DELETE“ galite ištrinti nurodytą paketą iš santykio. Tačiau TRUNCATE naudojimas ištrins visas nuorodas iš santykio.
  2. DELETE yra DML komanda, o TRUNCATE yra DDL komanda.
  3. DELETE naudoja WHERE sąlygą, kad filtruotų įrašą / paketus, kurie turi būti ištrinti. Tačiau TRUNCATE nereikalauja WHERE sąlygos, nes ji ištrina visas eilutes, todėl nereikia filtruoti rinkinių.
  4. DELETE suaktyvina lentelėms taikomus referencinius trigerius. Tačiau TRUNCATE nepalieka jokių stalų.
  5. „DELETE“ komanda pašalina eilutes po vieną iš lentelės, užsakyme jos apdorojamos. Tačiau „TRUNCATE“ neveikia vienas po kito. Vietoj to, TRUNCATE veikia duomenų puslapyje, kuriame saugomi lentelės duomenys.
  6. Prieš ištrindami ją ištrinti, DELETE įsigyja įrašo užraktą, o TRUNCATE iki duomenų puslapio ištrinimo gauna duomenų lapo užraktą.
  7. TRUNCATE yra greitesnis, palyginti su DELETE komanda.
  8. DELETE įrašykite kiekvieno įrašo sandorių žurnalą, o TRUNCATE įrašo kiekvieno duomenų puslapio sandorių žurnalą.
  9. Kai ištrinsite duomenis naudodami TRUNCATE, jis niekada negali būti atkurtas atgal, o jūs galite atkurti duomenis, kuriuos ištrynėte naudodami komandą DELETE.

Išvada:

Jei norite pritaikyti įrašų ištrynimą iš lentelės, galite naudoti komandą DELETE. Jei norite ištrinti lentelę, ty nenorite palikti jokių duomenų lentelėje, naudokite komandą TRUNCATE.

Top