logo

Forskjellen mellom Delete og Truncate Command

Forskjellen mellom kommandoen DELETE og TRUNCATE er den vanligste delen av et intervjuspørsmål. De brukes hovedsakelig til å slette data fra databasen. Hovedforskjellen mellom dem er at delete-setningen sletter data uten å tilbakestille en tabells identitet, mens truncate-kommandoen tilbakestiller en bestemt tabells identitet . Denne artikkelen forklarer den fullstendige oversikten over kommandoene DELETE og TRUNCATE og deres forskjeller som primært brukes om hverandre, men som er helt forskjellige.

Slett vs Truncate-kommando

Hva er en DELETE-kommando?

Det er en DML eller datamanipuleringskommando brukes til å slette poster fra en tabell som ikke er nødvendig i databasen. Den fjerner hele raden fra tabellen og produserer antallet slettede rader. Vi trenger slettetillatelsen på måltabellen for å utføre denne kommandoen. Det lar oss også filtrere og slette spesifikke poster ved å bruke HVOR klausul fra tabellen.

Det klargjør at vi har en sikkerhetskopi av databasen vår før vi utfører denne kommandoen fordi vi ikke kan gjenopprette de slettede postene ved å bruke denne spørringen. derfor sikkerhetskopiering av databaser tillate oss å gjenopprette dataene når vi trenger dem i fremtiden.

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

 DELETE FROM table_name WHERE condition; 

Hva er en TRUNCATE-kommando?

Den avkortede setningen er en DDL eller datadefinisjonsspråkkommando brukes til å fjerne fullstendige data fra tabellen uten å fjerne tabellstrukturen. Vi kan ikke bruke HVOR klausul med denne kommandoen, slik at filtrering av poster ikke er mulig. Etter å ha utført denne kommandoen, vil vi kan ikke rulle tilbake de slettede dataene fordi loggen ikke vedlikeholdes mens du utfører denne operasjonen.

Trunkeringskommandoen deallokerer sider i stedet for rader og gjør en oppføring for deallokeringssidene i stedet for rader i transaksjonsloggene. Denne kommandoen låser sidene i stedet for rader; dermed krever det færre låser og ressurser. Merk at vi ikke kan bruke truncate-setningen når en tabell refereres til av en fremmednøkkel eller deltar i en indeksert visning.

føtter vs fot

Følgende syntaks forklarer TRUNCATE-kommandoen for å fjerne data fra tabellen:

 TRUNCATE TABLE table_name; 

Viktige forskjeller mellom DELETE og TRUNCATE

Følgende punkter forklarer forskjellene mellom delete- og truncate-kommandoer:

  1. DELETE-setningen brukes når vi ønsker å fjerne noen eller alle postene fra tabellen, mens TRUNCATE-setningen vil slette hele rader fra en tabell.
  2. DELETE er en DML-kommando da den bare endrer tabelldataene, mens TRUNCATE er en DDL-kommando.
  3. DELETE-kommandoen kan filtrere posten/tuplene ved å bruke WHERE-klausulen. TRUNCATE-kommandoen tillater imidlertid ikke bruk HVOR klausul, så vi kan ikke filtrere rader mens vi trunkerer.
  4. SLETT aktiverer alle slett triggere på bordet for å fyre. Imidlertid utløses ingen utløsere på avkortingsoperasjonen fordi den ikke fungerer på individuelle rader.
  5. DELETE utfører sletting rad for rad én om gangen fra tabellen, i den rekkefølgen de ble behandlet. TRUNCATE opererer imidlertid på datasider i stedet for rader fordi den slettet hele tabelldata om gangen.
  6. DELETE-setningen sletter bare poster og tilbakestiller ikke bordets identitet , mens TRUNCATE tilbakestiller identiteten til en bestemt tabell.
  7. DELETE-kommandoen krever flere låser og databaseressurser fordi den får låsen på hver slettede rad. I motsetning til dette henter TRUNCATE låsen på datasiden før datasiden slettes; dermed krever det færre låser og få ressurser.
  8. DELETE-setningen gjør en oppføring i transaksjonslogg for hver slettede rad, mens TRUNCATE registrerer transaksjonsloggen for hver dataside.
  9. TRUNCATE-kommandoen er raskere enn DELETE-kommandoen ettersom den deallokerer datasidene i stedet for rader og registrerer datasider i stedet for rader i transaksjonslogger.
  10. Når posten slettes ved å bruke TRUNCATE-kommandoen, kan vi ikke gjenopprette den. Derimot kan vi gjenopprette de slettede dataene som vi fjernet fra SLETT-operasjonen.

SLETT vs. TRUNCATE sammenligningsdiagram

Følgende sammenligningsdiagram forklarer hovedforskjellene deres på en rask måte:

Sammenligningsgrunnlag SLETT TRUNCATE
Definisjon Delete-setningen brukes til å fjerne enkelt eller flere poster fra en eksisterende tabell avhengig av den angitte betingelsen. Truncate-kommandoen fjerner alle data fra en eksisterende tabell, men ikke selve tabellen. Den bevarer tabellstrukturen eller skjemaet.
Språk Det er en DML-kommando (Data Manipulation Language). Det er en DDL-kommando (Data Definition Language).
HVOR Den kan bruke WHERE-leddet til å filtrere en hvilken som helst spesifikk rad eller data fra tabellen. Den bruker ikke WHERE-leddet til å filtrere poster fra tabellen.
Tillatelse Vi må ha DELETE-tillatelse for å bruke denne kommandoen. Vi må ha ALTER-tillatelse for å bruke denne kommandoen.
Arbeider Denne kommandoen eliminerer poster én etter én. Denne kommandoen sletter hele datasiden som inneholder postene.
Låse Den låser raden før sletting. Det vil låse datasiden før sletting.
Bordidentitet Denne kommandoen tilbakestiller ikke tabellidentiteten fordi den bare sletter dataene. Den tilbakestiller alltid tabellidentiteten.
Transaksjon Den opprettholder transaksjonslogger for hver slettede post. Den opprettholder ikke transaksjonslogger for hver slettede dataside.
Hastighet Hastigheten er lav fordi den opprettholdt loggen. Utførelsen er rask fordi den slettet hele data om gangen uten å opprettholde transaksjonslogger.
Avtrekker Denne kommandoen kan også aktivere utløseren på bordet og få dem til å utløses. Denne kommandoen aktiverer ikke utløserne som brukes på bordet for å avfyre.
Restaurere Den lar oss gjenopprette de slettede dataene ved å bruke COMMIT- eller ROLLBACK-setningen. Vi kan ikke gjenopprette de slettede dataene etter å ha utført denne kommandoen.
Indeksert visning Den kan brukes med indekserte visninger. Den kan ikke brukes med indekserte visninger.
Rom DELETE-setningen opptar mer transaksjonsplass enn avkorting fordi den opprettholder en logg for hver slettede rad. TRUNCATE-setningen opptar mindre transaksjonsplass fordi den opprettholder en transaksjonslogg for hele datasiden i stedet for hver rad.

Konklusjon

I denne artikkelen har vi gjort en sammenligning mellom delete og truncate statement. Vi har konkludert med at en DELETE-kommando brukes når vi ønsker å tilpasse sletting av poster fra tabellen. Og en TRUNCATE-kommando brukes når vi ikke ønsker å legge igjen noen poster eller data i tabellen, dvs. vi ønsker å tømme tabellen.