Drop vs Truncate
Drop og Truncate er to SQL-setninger (Structured Query Language) som brukes i Database Management Systems, der vi ønsker å fjerne dataposter fra en database. Både Drop- og Truncate-setninger fjerner alle dataene i en tabell og den relaterte SQL-setningen. Slettingsoperasjonen er ikke effektiv i dette tilfellet fordi den bruker mer lagringsplass enn Drop og Truncate.
I tilfelle, hvis vi ønsker å forkaste en tabell i en database med alle dataene, lar SQL oss enkelt utføre dette ved å bruke Drop-setningen. Drop-kommando er en DDL-kommando (Data Definition Language), og den kan brukes til å ødelegge en eksisterende database, tabell, indeks eller visning. Den sletter hele informasjonen i en tabell, samt tabellstrukturen fra databasen. Vi kan også ønske å kvitte seg med alle dataene i en tabell enkelt, men uten tabellen, og vi kan bruke Truncate-setningen i SQL i et slikt scenario. Truncate er også en DDL-kommando, og den eliminerer alle radene i en tabell, men beholder tabelldefinisjonen den samme for fremtidig bruk.
Slipp kommando
Som nevnt tidligere, fjerner Drop-kommandoen tabelldefinisjonen og alle dens data, integritetsbegrensninger, indekser, utløsere og tilgangsrettigheter, som ble opprettet på den aktuelle tabellen. Så det fjerner det eksisterende objektet fra databasen helt, og relasjonene til andre tabeller vil heller ikke lenger være gyldige etter å ha utført kommandoen. Den fjerner også all informasjon om tabellen fra dataordboken. Følgende er den typiske syntaksen for bruk av Drop-setningen på en tabell.
DROP TABLE
Vi må ganske enkelt erstatte tabellnavnet som vi ønsker å fjerne fra databasen i eksemplet ovenfor av Drop-kommandoen.
Det er viktig å påpeke at Drop-setningen ikke kan brukes til å slette en tabell som allerede er referert til av en fremmednøkkelbegrensning. I så fall bør den refererende fremmednøkkelbegrensningen, eller den spesielle tabellen, måtte slettes først. Drop-setningen kan heller ikke brukes på systemtabellene i databasen.
Ettersom Drop-kommandoen er en automatisk commit-setning, kan ikke operasjonen når den er utløst rulles tilbake, og ingen utløsere vil bli utløst. Når en tabell slettes, vil ikke alle referansene til tabellen være gyldige, og hvis vi ønsker å bruke tabellen igjen, må den gjenskapes med alle integritetsbegrensninger og tilgangsrettigheter. Alle relasjonene til de andre bordene må også lokaliseres igjen.
Truncate-kommando
Truncate-kommandoen er en DDL-kommando, og den fjerner alle radene i en tabell uten noen brukerspesifiserte betingelser, og frigjør plassen som brukes av tabellen, men tabellstrukturen med dens kolonner, indekser og begrensninger forblir den samme. Truncate eliminerer data fra en tabell ved å deallokere datasidene som brukes til å lagre tabelldataene, og bare disse sidedeallokeringene holdes i transaksjonsloggen. Så den bruker færre transaksjonsloggressurser og systemressurser sammenlignet med andre relaterte SQL-kommandoer som Slett. Så Truncate er litt raskere uttalelse enn andre. Følgende er den typiske syntaksen for Truncate-kommandoen.
TRUNCATE TABLE
Vi bør erstatte tabellnavnet, som vi ønsker å fjerne hele data fra, i syntaksen ovenfor.
Truncate kan ikke brukes på en tabell som har blitt referert av en fremmednøkkelbegrensning. Den bruker en commit automatisk før den handler og en annen commit etterpå, så tilbakeføring av transaksjonen er umulig, og ingen utløsere utløses. Hvis vi ønsker å gjenbruke tabellen trenger vi bare å få tilgang til den eksisterende tabelldefinisjonen i databasen.
Hva er forskjellen mellom Drop og Truncate?
Både Drop- og Truncate-kommandoer er DDL-kommandoer og også auto-commit-setninger, slik at transaksjonene som utføres med disse kommandoene ikke kan rulles tilbake.
Den primære forskjellen mellom Drop og Truncate er at Drop-kommandoen fjerner, ikke bare alle dataene i en tabell, men den fjerner også tabellstrukturen permanent fra databasen med alle referanser, mens Truncate-kommandoen bare fjerner alle radene i en tabell, og den bevarer tabellstrukturen og dens referanser.
Hvis en tabell slettes, vil relasjonene til andre tabeller ikke lenger være gyldige, og integritetsbegrensningene og tilgangsrettighetene vil også bli fjernet. Så hvis tabellen må gjenbrukes, må den rekonstrueres med relasjonene, integritetsbegrensningene og også tilgangsprivilegiene. Men hvis en tabell avkortes, forblir tabellstrukturen og dens begrensninger for fremtidig bruk, og derfor er ingen av gjenskapingene ovenfor nødvendig for gjenbruk.
Når disse kommandoene brukes, må vi være forsiktige med å bruke dem. Vi bør også ha en bedre forståelse av arten av disse kommandoene, hvordan de fungerer, og også litt nøye planlegging før du bruker dem for å unngå å gå glipp av nødvendigheter. Til slutt kan begge disse kommandoene brukes til å rydde opp i databasene raskt og enkelt, og bruker færre ressurser.