logo

Skillnaden mellan kommandot Delete och Truncate

Skillnaden mellan kommandot DELETE och TRUNCATE är den vanligaste delen av en intervjufråga. De används främst för att radera data från databasen. Den största skillnaden mellan dem är att delete-satsen raderar data utan att återställa en tabells identitet, medan trunkeringskommandot återställer en viss tabells identitet . Den här artikeln förklarar den fullständiga översikten av kommandona DELETE och TRUNCATE och deras skillnader som främst används omväxlande men är helt olika.

Delete vs Truncate Command

Vad är ett DELETE-kommando?

Det är en DML eller datamanipulationskommando används för att radera poster från en tabell som inte krävs i databasen. Den tar bort hela raden från tabellen och producerar antalet raderade rader. Vi behöver raderingsbehörigheten på måltabellen för att utföra detta kommando. Det låter oss också filtrera och ta bort specifika poster med hjälp av VAR klausul från tabellen.

Det klargör att vi har en säkerhetskopia av vår databas innan vi kör detta kommando eftersom vi inte kan återställa de raderade posterna med den här frågan. Därför säkerhetskopiering av databas tillåta oss att återställa data när vi behöver dem i framtiden.

Följande syntax förklarar kommandot DELETE för att ta bort data från tabellen:

 DELETE FROM table_name WHERE condition; 

Vad är ett TRUNCATE-kommando?

Det trunkerade uttalandet är en DDL- eller datadefinitionsspråkkommando används för att ta bort fullständig data från tabellen utan att ta bort tabellstrukturen. Vi kan inte använda VAR sats med detta kommando, så att filtrering av poster inte är möjlig. Efter att ha utfört detta kommando, vi kan inte återställa raderade data eftersom loggen inte underhålls när den här åtgärden utförs.

Kommandot trunkate avallokerar sidor istället för rader och gör en post för deallokeringssidorna istället för rader i transaktionsloggarna. Detta kommando låser sidorna istället för rader; det kräver alltså färre lås och resurser. Observera att vi inte kan använda truncate-satsen när en tabell refereras av en främmande nyckel eller deltar i en indexerad vy.

hur man anropar en metod i java

Följande syntax förklarar kommandot TRUNCATE för att ta bort data från tabellen:

 TRUNCATE TABLE table_name; 

Viktiga skillnader mellan DELETE och TRUNCATE

Följande punkter förklarar skillnaderna mellan kommandot delete och truncate:

  1. DELETE-satsen används när vi vill ta bort några eller alla poster från tabellen, medan TRUNCATE-satsen tar bort hela rader från en tabell.
  2. DELETE är ett DML-kommando eftersom det bara modifierar tabelldata, medan TRUNCATE är ett DDL-kommando.
  3. DELETE-kommandot kan filtrera posten/tuplarna genom att använda WHERE-satsen. Men kommandot TRUNCATE tillåter inte användning VAR sats, så vi kan inte filtrera rader under trunkering.
  4. DELETE aktiverar alla ta bort triggers på bordet för att elda. Emellertid utlöses inga triggers på trunkeringsoperationen eftersom den inte fungerar på enskilda rader.
  5. DELETE utför radering rad för rad en i taget från tabellen, i den ordning de behandlades. TRUNCATE fungerar dock på datasidor istället för rader eftersom den raderade hela tabelldata åt gången.
  6. DELETE-satsen tar bara bort poster och återställer inte bordets identitet , medan TRUNCATE återställer identiteten för en viss tabell.
  7. DELETE-kommandot kräver fler lås och databasresurser eftersom det skaffar låset på varje raderad rad. Däremot förvärvar TRUNCATE låset på datasidan innan datasidan raderas; alltså kräver det färre lås och få resurser.
  8. DELETE-satsen gör en post i Transaktionsloggen för varje raderad rad medan TRUNCATE registrerar transaktionsloggen för varje datasida.
  9. TRUNCATE kommandot är snabbare än kommandot DELETE eftersom det avallokerar datasidorna istället för rader och registrerar datasidor istället för rader i transaktionsloggar.
  10. När posten raderas med kommandot TRUNCATE kan vi inte återställa den. Däremot kan vi återställa de raderade data som vi tog bort från DELETE-operationen.

DELETE kontra TRUNCATE jämförelsediagram

Följande jämförelsediagram förklarar deras huvudsakliga skillnader på ett snabbt sätt:

Jämförelsegrund RADERA STYMPA
Definition Delete-satsen används för att ta bort enstaka eller flera poster från en befintlig tabell beroende på det angivna villkoret. Kommandot truncate tar bort alla data från en befintlig tabell men inte själva tabellen. Den bevarar tabellstrukturen eller schemat.
Språk Det är ett DML-kommando (Data Manipulation Language). Det är ett DDL-kommando (Data Definition Language).
VAR Den kan använda WHERE-satsen för att filtrera vilken specifik rad eller data som helst från tabellen. Den använder inte WHERE-satsen för att filtrera poster från tabellen.
Lov Vi måste ha DELETE-behörighet för att använda detta kommando. Vi behöver ha ALTER-behörighet för att använda detta kommando.
Arbetssätt Detta kommando eliminerar poster en efter en. Detta kommando tar bort hela datasidan som innehåller posterna.
Låsa Det kommer att låsa raden innan radering. Den låser datasidan innan den tas bort.
Bordsidentitet Det här kommandot återställer inte tabellidentiteten eftersom det bara tar bort data. Den återställer alltid tabellidentiteten.
Transaktion Den upprätthåller transaktionsloggar för varje raderad post. Det upprätthåller inte transaktionsloggar för varje raderad datasida.
Fart Dess hastighet är långsam eftersom den bibehöll loggen. Dess exekvering är snabb eftersom den raderade hela data åt gången utan att underhålla transaktionsloggar.
Utlösare Detta kommando kan också aktivera triggern som appliceras på bordet och får dem att avfyras. Det här kommandot aktiverar inte triggarna som används på bordet för att avfyra.
Återställ Det tillåter oss att återställa raderade data genom att använda COMMIT- eller ROLLBACK-satsen. Vi kan inte återställa raderade data efter att ha kört detta kommando.
Indexerad vy Den kan användas med indexerade vyer. Det kan inte användas med indexerade vyer.
Plats DELETE-satsen upptar mer transaktionsutrymme än trunkering eftersom den upprätthåller en logg för varje raderad rad. TRUNCATE-satsen upptar mindre transaktionsutrymme eftersom den upprätthåller en transaktionslogg för hela datasidan istället för varje rad.

Slutsats

I den här artikeln har vi gjort en jämförelse mellan delete och truncate-sats. Vi har kommit fram till att ett DELETE-kommando används när vi vill anpassa raderingen av poster från tabellen. Och ett TRUNCATE-kommando används när vi inte vill lämna några poster eller data i tabellen, det vill säga vi vill tömma tabellen.