Drop vs Truncate
Drop og Truncate er to SQL-sætninger (Structured Query Language), der bruges i databasestyringssystemer, hvor vi ønsker at fjerne dataposter fra en database. Både Drop- og Truncate-sætninger fjerner alle data i en tabel og den relaterede SQL-sætning. Sletningshandlingen er ikke effektiv i dette tilfælde, fordi den bruger mere lagerplads end Drop og Truncate.
I tilfælde af, at hvis vi ønsker at kassere en tabel i en database helt med dens alle data, giver SQL os mulighed for nemt at udføre dette ved hjælp af Drop-sætning. Drop-kommando er en DDL-kommando (Data Definition Language), og den kan bruges til at ødelægge en eksisterende database, tabel, indeks eller visning. Det sletter hele informationen i en tabel, såvel som tabelstrukturen fra databasen. Vi kan også ønske at slippe af med alle data i en tabel ganske enkelt, men uden tabellen, og vi kan bruge Truncate-sætning i SQL i et sådant scenarie. Truncate er også en DDL-kommando, og den eliminerer alle rækkerne i en tabel, men bevarer tabeldefinitionen den samme til fremtidig brug.
Drop-kommando
Som tidligere nævnt fjerner Drop-kommandoen tabeldefinitionen og alle dens data, integritetsbegrænsninger, indekser, triggere og adgangsrettigheder, som blev oprettet på den pågældende tabel. Så det fjerner det eksisterende objekt fra databasen helt, og relationerne til andre tabeller vil heller ikke længere være gyldige efter udførelse af kommandoen. Det fjerner også alle oplysninger om tabellen fra dataordbogen. Følgende er den typiske syntaks for brug af Drop-sætningen på en tabel.
DROP TABLE
Vi skal blot erstatte det tabelnavn, som vi ønsker at fjerne fra databasen i ovenstående eksempel på Drop-kommandoen.
Det er vigtigt at påpege, at Drop-sætningen ikke kan bruges til at slette en tabel, som allerede er blevet refereret af en fremmednøgle-begrænsning. I så fald skal den refererende fremmednøgle eller den pågældende tabel slettes først. Drop-sætningen kan heller ikke anvendes på systemtabellerne i databasen.
Da Drop-kommandoen er en automatisk commit-erklæring, kan operationen, når den først er udløst, ikke rulles tilbage, og ingen triggere vil blive udløst. Når en tabel slettes, vil alle referencer til tabellen ikke være gyldige, og hvis vi vil bruge tabellen igen, skal den genskabes med alle integritetsbegrænsninger og adgangsrettigheder. Alle relationer til de andre borde skal også findes igen.
Truncate-kommando
Truncate-kommandoen er en DDL-kommando, og den fjerner alle rækkerne i en tabel uden nogen brugerspecificerede betingelser, og frigiver pladsen brugt af tabellen, men tabelstrukturen med dens kolonner, indekser og begrænsninger forbliver den samme. Truncate eliminerer data fra en tabel ved at deallokere de datasider, der bruges til at gemme tabeldataene, og kun disse sidedeallokeringer opbevares i transaktionsloggen. Så det bruger færre transaktionslogressourcer og systemressourcer sammenlignet med andre relaterede SQL-kommandoer som Slet. Så Truncate er en smule hurtigere udsagn end andre. Følgende er den typiske syntaks for Truncate-kommandoen.
TRUNCATE TABLE
Vi bør erstatte tabelnavnet, som vi ønsker at fjerne alle data fra, i ovenstående syntaks.
Truncate kan ikke bruges på en tabel, der er blevet refereret til af en fremmednøglebegrænsning. Den bruger en commit automatisk, før den handler, og en anden commit bagefter, så tilbagerulning af transaktionen er umulig, og ingen triggere udløses. Hvis vi vil genbruge tabellen, behøver vi kun at få adgang til den eksisterende tabeldefinition i databasen.
Hvad er forskellen mellem Drop og Truncate?
Både Drop- og Truncate-kommandoer er DDL-kommandoer og også auto-commit-udsagn, så de transaktioner, der udføres ved hjælp af disse kommandoer, kan ikke rulles tilbage.
Den primære forskel mellem Drop og Truncate er, at Drop-kommandoen fjerner ikke kun alle data i en tabel, men den fjerner også tabelstrukturen permanent fra databasen med alle referencer, mens Truncate-kommandoen kun fjerner alle rækkerne i en tabel, og den bevarer tabelstrukturen og dens referencer.
Hvis en tabel slettes, vil relationerne til andre tabeller ikke længere være gyldige, og integritetsbegrænsningerne og adgangsrettighederne vil også blive fjernet. Så hvis tabellen skal genbruges, skal den rekonstrueres med relationerne, integritetsbegrænsningerne og også adgangsrettighederne. Men hvis en tabel afkortes, forbliver tabelstrukturen og dens begrænsninger til fremtidig brug, og derfor kræves ingen af ovenstående genskabelser til genbrug.
Når disse kommandoer anvendes, skal vi være forsigtige med at bruge dem. Vi bør også have en bedre forståelse af arten af disse kommandoer, hvordan de fungerer, og også nogle omhyggelige planlægning, før du bruger dem for at forhindre, at vi mangler væsentlige ting. Endelig kan begge disse kommandoer bruges til at rydde op i databaserne hurtigt og nemt, hvilket bruger færre ressourcer.