logo

Különbség a Törlés és a Csonkítás parancs között

A DELETE és a TRUNCATE parancs közötti különbség az interjúkérdések leggyakoribb része. Főleg adatok törlésére szolgálnak az adatbázisból. A fő különbség köztük az, hogy a delete utasítás a tábla identitásának visszaállítása nélkül törli az adatokat, míg a truncate parancs visszaállítja egy adott tábla identitását. . Ez a cikk elmagyarázza a DELETE és a TRUNCATE parancsok teljes áttekintését, valamint a különbségeiket, amelyeket elsősorban felcserélhetően használnak, de teljesen eltérőek.

Törlés vs csonkítás parancs

Mi az a DELETE parancs?

Ez egy DML vagy adatkezelési parancs az adatbázisban nem szükséges rekordok törlésére szolgál. Eltávolítja a teljes sort a táblázatból, és előállítja a törölt sorok számát. A parancs végrehajtásához törlési engedélyre van szükségünk a céltáblán. Azt is lehetővé teszi számunkra, hogy szűrjük és töröljük az adott rekordokat a AHOL záradék a táblázatból.

Egyértelművé teszi, hogy a parancs végrehajtása előtt biztonsági másolatot készítünk adatbázisunkról, mivel ezzel a lekérdezéssel nem tudjuk helyreállítani a törölt rekordokat. Ezért a adatbázis biztonsági mentések lehetővé teszi számunkra az adatok visszaállítását, amikor a jövőben szükségünk lesz rá.

A következő szintaxis magyarázza a DELETE parancsot, amellyel eltávolíthatja az adatokat a táblából:

 DELETE FROM table_name WHERE condition; 

Mi az a TRUNCATE parancs?

A csonka állítás a DDL vagy adatdefiníciós nyelvi parancs teljes adatok eltávolítására szolgál a táblából a táblaszerkezet eltávolítása nélkül. Nem tudjuk használni a AHOL záradékot ezzel a paranccsal, így a rekordok szűrése nem lehetséges. A parancs végrehajtása után mi nem tudja visszaállítani a törölt adatokat mert a napló nem kerül karbantartásra a művelet végrehajtása közben.

A truncate parancs felszabadítja a sorok helyett oldalakat és a tranzakciós naplókban sorok helyett bejegyzést ad a felszabadító oldalakhoz. Ez a parancs az oldalakat zárolja sorok helyett; így kevesebb zárat és erőforrást igényel. Vegye figyelembe, hogy nem használhatjuk a csonkolt utasítást, ha egy táblára idegen kulcs hivatkozik, vagy ha indexelt nézetben vesz részt.

css aláhúzott szöveg

A következő szintaxis magyarázza a TRUNCATE parancsot, amellyel eltávolíthatja az adatokat a táblából:

 TRUNCATE TABLE table_name; 

Főbb különbségek a DELETE és a TRUNCATE között

A következő pontok ismertetik a delete és a trunate parancs közötti különbségeket:

  1. A DELETE utasítás akkor használatos, ha a rekordok egy részét vagy az összeset el akarjuk távolítani a táblából, míg a TRUNCATE utasítás teljes sorokat töröl a táblából.
  2. A DELETE egy DML parancs, mivel csak a táblázat adatait módosítja, míg a TRUNCATE egy DDL parancs.
  3. A DELETE parancs a WHERE záradék használatával szűrheti a rekordokat/tuple-okat. A TRUNCATE parancs azonban nem teszi lehetővé a használatát AHOL záradékot, így csonkítás közben nem tudjuk szűrni a sorokat.
  4. A DELETE az összeset aktiválja triggerek törlése az asztalon tüzelni. A csonkítási műveletre azonban nem indítanak triggereket, mert az nem működik az egyes sorokon.
  5. A DELETE soronként egyenként törlést hajt végre a táblából, a feldolgozás sorrendjében. A TRUNCATE azonban adatoldalakon működik sorok helyett, mert egyszerre a teljes táblázatadatot törölte.
  6. A DELETE utasítás csak a rekordokat törli, és nem állítja vissza a táblázat identitása , míg a TRUNCATE visszaállítja egy adott tábla azonosságát.
  7. A DELETE parancs több zárolást és adatbázis-erőforrást igényel, mivel minden törölt sorban megkapja a zárolást. Ezzel szemben a TRUNCATE megszerzi az adatlap zárolását az adatoldal törlése előtt; így kevesebb zárat és kevés erőforrást igényel.
  8. A DELETE utasítás bejegyzést tesz a tranzakciós napló minden törölt sorhoz, míg a TRUNCATE minden adatoldalhoz rögzíti a tranzakciós naplót.
  9. A TRUNCATE parancs az gyorsabban mint a DELETE parancs, mivel felszabadítja az adatlapokat a sorok helyett, és adatlapokat rögzít a sorok helyett a tranzakciós naplókban.
  10. Ha a rekord törlődik a TRUNCATE paranccsal, nem tudjuk visszaállítani. Ezzel szemben a DELETE műveletből eltávolított törölt adatokat vissza tudjuk állítani.

Összehasonlítási táblázat TÖRLÉSE vs. TRUNCATE

Az alábbi összehasonlító táblázat gyorsan elmagyarázza ezek főbb különbségeit:

Összehasonlítási alap TÖRÖL CSONKA
Meghatározás A delete utasítás a megadott feltételektől függően egyetlen vagy több rekord eltávolítására szolgál egy meglévő táblából. A csonka parancs a teljes adatot eltávolítja egy meglévő táblából, magát a táblát nem. Megőrzi a táblázat szerkezetét vagy sémáját.
Nyelv Ez egy DML (Data Manipulation Language) parancs. Ez egy DDL (Data Definition Language) parancs.
AHOL Használhatja a WHERE záradékot bármely konkrét sor vagy adat kiszűrésére a táblázatból. Nem használja a WHERE záradékot a rekordok kiszűrésére a táblából.
Engedély A parancs használatához DELETE engedéllyel kell rendelkeznünk. A parancs használatához ALTER engedéllyel kell rendelkeznünk.
Dolgozó Ez a parancs egyenként törli a rekordokat. Ez a parancs törli a rekordokat tartalmazó teljes adatlapot.
Zár A törlés előtt zárolja a sort. A törlés előtt zárolja az adatoldalt.
Táblaazonosító Ez a parancs nem állítja vissza a tábla azonosítóját, mert csak az adatokat törli. Mindig visszaállítja a tábla azonosságát.
Tranzakció Minden törölt rekordhoz tranzakciós naplót vezet. Nem vezet tranzakciós naplót minden egyes törölt adatoldalhoz.
Sebesség A sebessége lassú, mert fenntartotta a naplót. Végrehajtása gyors, mert egyszerre teljes adatot törölt anélkül, hogy tranzakciós naplókat vezetett volna.
Kioldó Ez a parancs aktiválhatja az asztalon alkalmazott triggert is, és elindíthatja azokat. Ez a parancs nem aktiválja a táblán alkalmazott triggereket az aktiváláshoz.
visszaállítás Lehetővé teszi a törölt adatok visszaállítását a COMMIT vagy ROLLBACK utasítás használatával. A parancs végrehajtása után nem tudjuk visszaállítani a törölt adatokat.
Indexelt nézet Indexelt nézetekkel használható. Nem használható indexelt nézetekkel.
Hely A DELETE utasítás több tranzakciós területet foglal el, mint a csonkolt, mert minden törölt sorról naplót vezet. A TRUNCATE utasítás kevesebb tranzakciós területet foglal el, mivel az egyes sorok helyett a teljes adatlapra vonatkozó tranzakciónaplót vezet.

Következtetés

Ebben a cikkben összehasonlítottuk a törlést és a csonkolást. Arra a következtetésre jutottunk, hogy a DELETE parancsot akkor használjuk, ha testre szeretnénk szabni a rekordok táblából való törlését. A TRUNCATE parancsot pedig akkor használjuk, ha nem akarunk rekordokat vagy adatokat hagyni a táblában, azaz ki akarjuk üríteni a táblát.