Ajánlott, 2024

Szerkesztő Választása

Különbség a DELETE és a TRUNCATE között SQL-ben

A DELETE és a TRUNCATE parancsok a parancsok eltávolítására szolgálnak, de különböznek egymástól. SQL-ben a DELETE parancs egy Data Manipulation Language parancs, míg a TRUNCATE parancs egy Data Definition Language parancs. Ugyanakkor a DELETE és a TRUNCATE közötti különbségtétel az, hogy a DELETE képes eltávolítani a megadott sorokat egy kapcsolatból, mivel a TRUNCATE parancs eltávolítja a teljes sorokat a kapcsolatból.

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 alapjaTÖRÖLTRUNCATE
AlapvetőMegadhatja a törölni kívánt sort.Az összes rekordot egy kapcsolatból törli.
NyelvA DELETE egy Data Manipulation Language parancs.A TRUNCATE egy Data Definition Language parancs.
HOLA DELETE parancs WHERE-mondattal rendelkezik.A TRUNCATE parancsnak nincs WHERE-feltétele.
ravaszA 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ésA DELETE parancs a sorokat egyenként megszünteti.A TRUNCATE törli a rekordokat tartalmazó teljes adatlapot.
ZárA DELETE parancs bezárja a sor / rekordot.A TRUNCATE parancs bezárása adatlap a táblázatadatok törlése előtt.
SebességA 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ásA 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

  1. 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.
  2. A DELETE DML parancs, míg a TRUNCATE DDL parancs.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. A TRUNCATE gyorsabb a DELETE parancshoz képest.
  8. 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.
  9. 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.

Top