logo

Forskellen mellem Delete og Truncate Command

Forskellen mellem kommandoen DELETE og TRUNCATE er den mest almindelige del af et interviewspørgsmål. De bruges hovedsageligt til at slette data fra databasen. Den største forskel mellem dem er, at delete-sætningen sletter data uden at nulstille en tabels identitet, hvorimod truncate-kommandoen nulstiller en bestemt tabels identitet . Denne artikel forklarer det komplette overblik over kommandoerne DELETE og TRUNCATE og deres forskelle, der primært bruges i flæng, men er helt forskellige.

Slet vs Truncate-kommando

Hvad er en DELETE-kommando?

Det er en DML eller datamanipulationskommando bruges til at slette poster fra en tabel, der ikke er påkrævet i databasen. Det fjerner hele rækken fra tabellen og producerer antallet af slettede rækker. Vi har brug for slettetilladelsen på måltabellen for at udføre denne kommando. Det giver os også mulighed for at filtrere og slette eventuelle specifikke poster ved hjælp af HVOR klausul fra tabellen.

Det præciserer, at vi har en sikkerhedskopi af vores database, før vi udfører denne kommando, fordi vi ikke kan gendanne de slettede poster ved hjælp af denne forespørgsel. Derfor er backup af databaser tillade os at gendanne dataene, når vi har brug for dem i fremtiden.

Følgende syntaks forklarer kommandoen DELETE for at fjerne data fra tabellen:

 DELETE FROM table_name WHERE condition; 

Hvad er en TRUNCATE-kommando?

Den afkortede erklæring er en DDL eller data definition sprog kommando bruges til at fjerne komplette data fra tabellen uden at fjerne tabelstrukturen. Vi kan ikke bruge HVOR klausul med denne kommando, så filtrering af poster ikke er mulig. Efter at have udført denne kommando, vi kan ikke rulle de slettede data tilbage fordi loggen ikke vedligeholdes, mens denne handling udføres.

Trunkeringskommandoen deallokerer sider i stedet for rækker og laver en indtastning for deallokeringssiderne i stedet for rækker i transaktionslogfiler. Denne kommando låser siderne i stedet for rækker; dermed kræver det færre låse og ressourcer. Bemærk, at vi ikke kan bruge truncate-sætningen, når en tabel refereres af en fremmednøgle eller deltager i en indekseret visning.

algoritmedybde første søgning

Følgende syntaks forklarer TRUNCATE-kommandoen til at fjerne data fra tabellen:

 TRUNCATE TABLE table_name; 

Vigtigste forskelle mellem DELETE og TRUNCATE

Følgende punkter forklarer forskellene mellem delete og truncate kommando:

  1. DELETE-sætningen bruges, når vi ønsker at fjerne nogle eller alle posterne fra tabellen, mens TRUNCATE-sætningen vil slette hele rækker fra en tabel.
  2. DELETE er en DML-kommando, da den kun ændrer tabeldataene, mens TRUNCATE er en DDL-kommando.
  3. DELETE-kommandoen kan filtrere posten/tuplerne ved at bruge WHERE-sætningen. TRUNCATE-kommandoen tillader dog ikke brug HVOR klausul, så vi kan ikke filtrere rækker, mens vi trunkerer.
  4. SLET aktiverer alle slet triggere på bordet for at fyre. Der udløses dog ingen triggere på trunkeringsoperationen, fordi den ikke fungerer på individuelle rækker.
  5. DELETE udfører sletning række-for-række én ad gangen fra tabellen, i den rækkefølge, de blev behandlet. TRUNCATE opererer dog på datasider i stedet for rækker, fordi det slettede hele tabeldata ad gangen.
  6. DELETE-sætningen sletter kun poster og nulstiller ikke bordets identitet , hvorimod TRUNCATE nulstiller identiteten af ​​en bestemt tabel.
  7. DELETE-kommandoen kræver flere låse og databaseressourcer, fordi den henter låsen på hver slettede række. I modsætning hertil henter TRUNCATE låsen på datasiden før sletning af datasiden; dermed kræver det færre låse og få ressourcer.
  8. DELETE-erklæringen laver en indtastning i transaktionslog for hver slettede række, hvorimod TRUNCATE registrerer transaktionsloggen for hver dataside.
  9. TRUNCATE kommando er hurtigere end kommandoen DELETE, da den deallokerer datasiderne i stedet for rækker og registrerer datasider i stedet for rækker i transaktionslogfiler.
  10. Når posten slettes ved at bruge TRUNCATE-kommandoen, kan vi ikke gendanne den tilbage. I modsætning hertil kan vi gendanne de slettede data tilbage, som vi fjernede fra DELETE-operationen.

SLET vs. TRUNCATE sammenligningsdiagram

Følgende sammenligningsdiagram forklarer deres vigtigste forskelle på en hurtig måde:

Sammenligningsgrundlag SLET TRUNCATE
Definition Delete-sætningen bruges til at fjerne enkelte eller flere poster fra en eksisterende tabel afhængigt af den angivne betingelse. Trunkeringskommandoen fjerner alle data fra en eksisterende tabel, men ikke selve tabellen. Det bevarer tabelstrukturen eller skemaet.
Sprog Det er en DML-kommando (Data Manipulation Language). Det er en DDL-kommando (Data Definition Language).
HVOR Den kan bruge WHERE-sætningen til at filtrere enhver specifik række eller data fra tabellen. Den bruger ikke WHERE-udtrykket til at filtrere poster fra tabellen.
Tilladelse Vi skal have DELETE-tilladelse for at bruge denne kommando. Vi skal have ALTER-tilladelse for at bruge denne kommando.
Arbejder Denne kommando eliminerer poster én efter én. Denne kommando sletter hele datasiden, der indeholder posterne.
Låse Den låser rækken før sletning. Det vil låse datasiden før sletning.
Bordidentitet Denne kommando nulstiller ikke tabelidentiteten, fordi den kun sletter dataene. Det nulstiller altid tabelidentiteten.
Transaktion Det vedligeholder transaktionslogfiler for hver slettet post. Det vedligeholder ikke transaktionslogfiler for hver slettede dataside.
Fart Dens hastighed er langsom, fordi den vedligeholdt loggen. Dens udførelse er hurtig, fordi den slettede hele data ad gangen uden at vedligeholde transaktionslogfiler.
Udløser Denne kommando kan også aktivere triggeren på bordet og få dem til at udløses. Denne kommando aktiverer ikke de triggere, der anvendes på bordet for at affyre.
Gendan Det giver os mulighed for at gendanne de slettede data ved at bruge COMMIT- eller ROLLBACK-sætningen. Vi kan ikke gendanne de slettede data efter at have brugt denne kommando.
Indekseret visning Det kan bruges med indekserede visninger. Det kan ikke bruges med indekserede visninger.
Plads DELETE-sætningen optager mere transaktionsplads end afkortning, fordi den vedligeholder en log for hver slettede række. TRUNCATE-sætningen optager mindre transaktionsplads, fordi den opretholder en transaktionslog for hele datasiden i stedet for hver række.

Konklusion

I denne artikel har vi lavet en sammenligning mellem delete og truncate statement. Vi har konkluderet, at en DELETE-kommando bruges, når vi ønsker at tilpasse sletningen af ​​poster fra tabellen. Og en TRUNCATE-kommando bruges, når vi ikke ønsker at efterlade nogen poster eller data i tabellen, dvs. vi ønsker at tømme tabellen.