Rekommenderas, 2024

Redaktionen

Skillnad mellan DELETE och TRUNCATE i SQL

DELETE och TRUNCATE är kommandon som används för att ta bort tuples från ett förhållande, men de skiljer sig i många sammanhang. I SQL är DELETE-kommandot ett kommando för data manipuleringsspråk medan TRUNCATE-kommandot är ett kommando för datadefinitionsspråk. Den punkt som tillåter oss att skilja mellan DELETE och TRUNCATE är emellertid att DELETE kan ta bort specificerade tuplar från en relation, medan TRUNCATE-kommandot tar bort hela tomter från ett förhållande.

vi borde inte sluta här, det finns många andra skillnader mellan DELETE och TRUNCATE. Låt oss diskutera dem med hjälp av jämförelsetabellen som visas nedan.

Jämförelsediagram

Grunder för jämförelseRADERASTYMPA
GrundläggandeDu kan ange tupeln som du vill radera.Det tar bort alla tuplar från ett förhållande.
SpråkDELETE är ett kommando för data manipulering.TRUNCATE är ett kommando för datadefinition.
VARDELETE-kommandot kan ha WHERE-klausul.TRUNCATE-kommandot har inte WHERE-klausul.
triggerDELETE-kommandot aktiverar avtryckaren som appliceras på bordet och får dem att elda.TRUNCATE-kommandot aktiverar inte triggarna för att skjuta.
RaderingDELETE-kommandot eliminerar tuplarna en-för-en.TRUNCATE radera hela datasidan som innehåller tuplarna.
LåsaDELETE-kommandot låser raden / tupeln innan du tar bort den.TRUNCATE kommandoslåsdatasidan innan du raderar tabelldata.
FartDELETE-kommandot fungerar långsammare jämfört med TRUNCATE.TRUNCATE är snabbare jämfört med DELETE.
TransaktionDELETE registrerar transaktionsloggen för varje borttagen tupel.TRUNCATE rekordtransaktionslogg för varje borttagen datasida.
ÅterställaDELETE-kommandot kan följas antingen med COMMIT eller ROLLBACK.TRUNCATE-kommandot kan inte vara ROLLBACK.

Definition av DELETE

DELETE är ett DML-kommando ( Data Manipulation Language ). Uppgiften med DELETE-kommandot är att ta bort eller ta bort tuplarna från ett bord eller en relation. Med hjälp av DELETE kan vi eliminera hela tupeln med alla attributvärden från ett förhållande. DELETE tar inte bort värdet för ett visst attribut, en tupel från förhållandet.

Du kan filtrera de tupler som du vill radera från ett bord, med WHERE- klausulen. Om du anger WHERE-klausulen i DELETE-satsen, kommer den bara att ta bort de pjäser som uppfyller WHERE-villkoret. Men om du inte anger WHERE-klausulen i DELETE-satsen, tar den bort eller eliminerar alla tuplarna från en relation som standard. VAR-satsen i DELETE-satsen kan innehålla nätade SELECT-FROM-WHERE- satser.

Syntetmen för DELETE-kommandot är som följer:

DELETE FROM table_name WHERE [ conditon ];

DELETE-kommandot fungerar endast på en enda relation eller tabell i taget. Om du vill ta bort tupel från olika relationer måste du placera olika DELETE-kommandon för varje. Men att ta bort tupel från ett förhållande kan bryta mot databasens referensintegritet, vilket kan lösas med hjälp av triggers. Om DELETE-kommandot bryter mot referensintegritet aktiveras alla referenstriggare (om de är angivna) som sprider bort åtgärden på tuplarna med olika förhållanden som hänvisar till de borttagna tuplarna.

DELETE-kommandot först lås raden eller tupeln som ska raderas och ta bort tupeln en-för-en . Därför krävs det fler lås och resurser som gör det långsammare . Du kan göra de ändringar som görs med DELETE-utlåtandet permanent med COMMIT, eller du kan återställa databasen med ROLLBACK .

Definition av TRUNCATE

TRUNCATE liknar DELETE-kommandot eftersom det också tar bort tuplar från ett förhållande. Skillnaden är att den tar bort hela tuplar från ett förhållande. När TRUNCATE-kommandot körs raderas hela data från tabellen, varje tupel tillsammans med alla dess attributvärden elimineras från tabellen. Men bordets struktur finns fortfarande i databasen. Så, du kan återigen komma in i tuppen i bordet. TRUNCATE är ett kommando för datadefinition .

Synkontrollen för TRUNCATE-kommandot är som följer:

TRUNCATE TABLE tabellnamn ;

Liksom DELETE, fungerar TRUNCATE inte på tabelldata rad för rad. I stället fungerar den på datasidorna som lagrar tabelldata. Nu, när TRUNCATE tar bort datasidor måste den skaffa låset på datasidor istället för tuples. Därför resulterar det i mindre krav på lås och resurs som gör TRUNCATE snabbare jämfört med DELETE.

Genomförandet av TRUNCATE-kommandot aktiverar inte några utlösare eftersom det inte använder data rad för rad. TRUNCATE kan inte utföras om tabellen refereras av någon utländsk nyckel . När TRUNCATE-kommandot raderar tabelldata kan det aldrig återställas .

Viktiga skillnader mellan DELETE och TRUNCATE i SQL

  1. Huvudskillnaden mellan DELETE och TRUNCATE är att med DELETE kan du radera specificerat tuple från ett förhållande. Men användningen av TRUNCATE kommer att radera hela tuples från ett förhållande.
  2. DELETE är DML-kommando medan TRUNCATE är DDL-kommando.
  3. DELETE använder WHERE-klausul för att filtrera de poster / tavlor som ska raderas. TRUNCATE kräver dock inte WHERE-klausul eftersom det tar bort alla tuplar, så det är inte nödvändigt att filtrera tuplarna.
  4. DELETE aktiverar referensutlösare som tillämpas på tabellerna. Men TRUNCATE brinner inte några triggers på bordet.
  5. DELETE-kommandot eliminerar tuplarna en-för-en från bordet, i den ordning de bearbetas. TRUNCATE fungerar emellertid inte på tuples en-för-en. I stället fungerar TRUNCATE på datasidan som lagrar tabelldata.
  6. DELETE skaffa låset på tupeln innan du raderar det medan TRUNCATE förvärva låset på datasidan innan du tar bort datasidan.
  7. TRUNCATE är snabbare jämfört med DELETE-kommandot.
  8. DELETE rekordtransaktionslogg för varje tuple medan TRUNCATE-transaktionslogg för varje datasida.
  9. När du tar bort data med hjälp av TRUNCATE, kan den aldrig återställas, medan du kan återställa data som du raderade med DELETE-kommandot.

Slutsats:

Om du vill anpassa borttagningen av poster från tabellen kan du använda DELETE-kommandot. Om du vill tömma tabellen dvs att du inte vill lämna några data i ett bord, använd sedan TRUNCATE-kommandot.

Top