nem szabad megállnunk, sok más különbség van a DELETE és a TRUNCATE között. Beszéljük meg ezeket az alábbi táblázat segítségével.
Összehasonlító táblázat
Az összehasonlítás alapja | TÖRÖL | TRUNCATE |
---|---|---|
Alapvető | Megadhatja a törölni kívánt sort. | Az összes rekordot egy kapcsolatból törli. |
Nyelv | A DELETE egy Data Manipulation Language parancs. | A TRUNCATE egy Data Definition Language parancs. |
HOL | A DELETE parancs WHERE-mondattal rendelkezik. | A TRUNCATE parancsnak nincs WHERE-feltétele. |
ravasz | A DELETE parancs aktiválja az asztalon alkalmazott triggert, és tüzet okoz. | A TRUNCATE parancs nem aktiválja a tűz kiváltóit. |
Törlés | A DELETE parancs a sorokat egyenként megszünteti. | A TRUNCATE törli a rekordokat tartalmazó teljes adatlapot. |
Zár | A DELETE parancs bezárja a sor / rekordot. | A TRUNCATE parancs bezárása adatlap a táblázatadatok törlése előtt. |
Sebesség | A DELETE parancs lassabban működik a TRUNCATE-hoz képest. | A TRUNCATE gyorsabb, mint a DELETE. |
Tranzakció | A DELETE rögzíti az egyes törölt sorok tranzakciós naplóját. | TRUNCATE rekord tranzakciós napló minden törölt adat oldalon. |
visszaállítás | A DELETE parancsot a COMMIT vagy a ROLLBACK követheti. | A TRUNCATE parancs nem lehet ROLLBACK. |
A DELETE meghatározása
A DELETE egy Data Manipulation Language (DML) parancs. A DELETE parancs feladata, hogy törölje vagy eltávolítsa a táblákat vagy kapcsolatokat. A DELETE használatával képesek vagyunk megszüntetni a teljes sorozatot, az összes attribútumértékét egy kapcsolattól. A DELETE nem távolítja el az adott attribútum értékét, a függvényből egy rekordot.
A WHERE záradék segítségével szűrheti a törölni kívánt sorokat. Ha megadja a WHERE záradékot a DELETE utasításban, akkor csak a WHERE záradék feltételeinek megfelelő sorokat törli. De ha nem adja meg a WHERE-mondatot a DELETE utasításban, akkor alapértelmezés szerint törli vagy megszünteti a kapcsolatot a kapcsolatból. WHERE záradék a DELETE utasításban tartalmazhat beágyazott SELECT-FROM-WHERE utasításokat.
A DELETE parancs szintaxisa a következő:
TÖRLÉS TÁBLÁZATBÓL: [ hol ];
A DELETE parancs egyszerre csak egyetlen kapcsolaton vagy táblán működik. Abban az esetben, ha a különböző kapcsolatokból törölni szeretné a másolatot, akkor minden DELETE parancsot el kell helyeznie. A rekord törlése az egyik viszonyról azonban sértheti az adatbázis referencia integritását, amelyet a triggerek segítségével lehet megoldani. Ha a DELETE parancs megsérti a referencia integritást, akkor az összes referenciaindító (ha van megadva) aktiválódik, amely a törlési műveletet a törölt sorokra utaló különböző kapcsolatok soraira terjeszti.
A DELETE parancs először zárolja a törlendő sort vagy sorozatot, majd egyenként törölje a sort. Ezért több zárat és erőforrást igényel, ami lassabbá teszi . A DELETE utasítással végrehajtott változtatások a COMMIT használatával véglegesen elvégezhetők, vagy az adatbázist visszaállíthatja a ROLLBACK használatával.
A TRUNCATE meghatározása
A TRUNCATE hasonló a DELETE parancshoz, mivel törli a rekordokat a kapcsolatból. A különbség az, hogy törli a teljes sorokat egy kapcsolatból. Ahogy a TRUNCATE parancs végrehajtásra kerül, a táblázat teljes adatai törlődnek, minden egyes sor és az összes attribútum értéke megszűnik a táblázatból. De az asztal szerkezete még mindig létezik az adatbázisban. Tehát újra beírhatja a sorokat a táblázatba. A TRUNCATE egy Data Definition Language parancs.
A TRUNCATE parancs szintaxisa a következő:
TRUNCATE TABLE table_name ;
A DELETE-hez hasonlóan, a TRUNCATE nem működik a táblázat adatai soronként. Ehelyett a táblázat adatait tároló adatlapokon működik. Most, amikor a TRUNCATE törli az adatlapokat, meg kell szereznie az adatlapok zárolását a sorok helyett. Ennélfogva kevesebb záradékot és erőforrást követel meg, ami gyorsabbá teszi a TRUNCATE-t a DELETE-hez képest.
A TRUNCATE parancs végrehajtása nem aktiválja a triggereket, mivel nem működtet adatokat soronként. A TRUNCATE nem hajtható végre abban az esetben, ha a táblázatot bármely idegen kulcs hivatkozik. Miután a TRUNCATE parancs törli a táblázat adatait, azt soha nem lehet visszaállítani .
A DELETE és a TRUNCATE közötti különbségek SQL-ben
- A fő különbség a DELETE és a TRUNCATE között az, hogy a DELETE használatával törölhetünk egy megadott számot egy kapcsolatból. A TRUNCATE használata azonban a teljes sorokat törölni fogja egy kapcsolatból.
- A DELETE DML parancs, míg a TRUNCATE DDL parancs.
- A DELETE a WHERE záradékot használja a törlendő rekordok / rekordok szűrésére. Azonban a TRUNCATE nem igényel WHERE-mondatot, mivel törli az összes rekordot, ezért nincs szükség a sorok szűrésére.
- A DELETE aktiválja a táblákra alkalmazott referencia triggereket. De a TRUNCATE semmilyen kiváltó tényezőt nem tűz az asztalon.
- A DELETE paranccsal a sorok egyenként eltávolíthatók a táblázatból, a sorrendben azokat feldolgozzák. A TRUNCATE azonban nem működik egyszerre egyenként. Ehelyett a TRUNCATE olyan adatlapon működik, amely a táblázat adatait tárolja.
- A DELETE megszerzi a blokk zárolását a törlés előtt, míg a TRUNCATE az adatlap törlése előtt megszerzi az adatlapon lévő zárat.
- A TRUNCATE gyorsabb a DELETE parancshoz képest.
- DELETE rögzítse a tranzakciós naplót minden egyes sorra, míg a TRUNCATE rögzíti az egyes adatlapok tranzakciós naplóját.
- Miután törölte az adatokat TRUNCATE segítségével, soha nem lehet visszaállítani, míg visszaállíthatja azokat az adatokat, amelyeket törölte a DELETE paranccsal.
Következtetés:
Ha testreszabni szeretné a rekordok törlését a táblából, használhatja a DELETE parancsot. Ha ki szeretné tölteni a táblázatot, vagyis nem akar semmilyen adatot elhagyni a táblázatban, akkor használja a TRUNCATE parancsot.