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.
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:
- DELETE-setningen brukes når vi ønsker å fjerne noen eller alle postene fra tabellen, mens TRUNCATE-setningen vil slette hele rader fra en tabell.
- DELETE er en DML-kommando da den bare endrer tabelldataene, mens TRUNCATE er en DDL-kommando.
- 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.
- SLETT aktiverer alle slett triggere på bordet for å fyre. Imidlertid utløses ingen utløsere på avkortingsoperasjonen fordi den ikke fungerer på individuelle rader.
- 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.
- DELETE-setningen sletter bare poster og tilbakestiller ikke bordets identitet , mens TRUNCATE tilbakestiller identiteten til en bestemt tabell.
- 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.
- DELETE-setningen gjør en oppføring i transaksjonslogg for hver slettede rad, mens TRUNCATE registrerer transaksjonsloggen for hver dataside.
- TRUNCATE-kommandoen er raskere enn DELETE-kommandoen ettersom den deallokerer datasidene i stedet for rader og registrerer datasider i stedet for rader i transaksjonslogger.
- 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.