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.
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:
- 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.
- A DELETE egy DML parancs, mivel csak a táblázat adatait módosítja, míg a TRUNCATE egy DDL parancs.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.