Skillnaden Mellan Drop Och Truncate

Skillnaden Mellan Drop Och Truncate
Skillnaden Mellan Drop Och Truncate

Video: Skillnaden Mellan Drop Och Truncate

Video: Skillnaden Mellan Drop Och Truncate
Video: SQL: Delete Vs Truncate Vs Drop 2024, November
Anonim

Drop vs Truncate

Drop and Truncate är två SQL-uttalanden (Structured Query Language) som används i databashanteringssystem, där vi vill ta bort dataposter från en databas. Både Drop- och Truncate-uttalanden tar bort hela data i en tabell och relaterat SQL-uttalande. Radering är inte effektivt i det här fallet eftersom det använder fler lagringsutrymmen än Drop and Truncate.

Om vi vill kasta en tabell i en databas helt och hållet med alla data, tillåter SQL oss att enkelt utföra detta med hjälp av Drop-uttalande. Drop-kommando är ett DDL-kommando (Data Definition Language), och det kan användas för att förstöra en befintlig databas, tabell, index eller vy. Det raderar hela informationen i en tabell, liksom tabellstrukturen från databasen. Vi kanske också vill bli av med all data i en tabell helt enkelt, men utan tabellen, och vi kan använda Truncate-uttalande i SQL i ett sådant scenario. Truncate är också ett DDL-kommando och det eliminerar alla rader i en tabell men bevarar samma definition för framtida användning.

Släpp kommandot

Som nämnts tidigare tar Drop-kommandot bort tabelldefinitionen och alla dess data, integritetsbegränsningar, index, utlösare och åtkomstbehörigheter, som skapades på den specifika tabellen. Så det tappar det befintliga objektet helt från databasen, och förhållandena till andra tabeller kommer inte längre att gälla efter att kommandot har körts. Det tar också bort all information om tabellen från data ordlistan. Följande är den typiska syntaxen för att använda Drop-uttalandet på ett bord.

SLÄPP BORD

Vi måste helt enkelt ersätta tabellnamnet som vi vill ta bort från databasen i ovanstående exempel på Drop-kommandot.

Det är viktigt att påpeka att Drop-uttalande inte kan användas för att ta bort en tabell, som redan har refererats av en främmande nyckelbegränsning. I så fall måste den begränsande utländska nyckelbegränsningen eller den specifika tabellen tappas först. Drop-uttalande kan inte heller tillämpas på systemtabellerna i databasen.

Eftersom Drop-kommandot är ett automatiskt engagemangsuttalande kan inte operationen återupptas och inga utlösare kommer att avfyras. När en tabell tappas är alla referenser till tabellen inte giltiga, och om vi vill använda tabellen igen måste den återskapas med alla integritetsbegränsningar och åtkomstbehörigheter. Alla relationer till de andra tabellerna måste också lokaliseras igen.

Avkorta kommandot

Truncate-kommandot är ett DDL-kommando och det tar bort alla rader i en tabell utan några användarspecifika villkor och frigör det utrymme som används av tabellen, men tabellstrukturen med dess kolumner, index och begränsningar förblir densamma. Trunkerar eliminerar data från en tabell genom att omplacera de datasidor som används för att lagra tabelldata, och endast dessa sidfördelningar sparas i transaktionsloggen. Så det använder färre transaktionsloggresurser och systemresurser jämfört med andra relaterade SQL-kommandon som Delete. Så Truncate är lite snabbare uttalande än andra. Följande är den typiska syntaxen för Truncate-kommandot.

TRUNCATE BORD

Vi bör ersätta tabellnamnet, från vilket vi vill ta bort hela data, i ovanstående syntax.

Truncate kan inte användas på en tabell som har refererats av en utländsk nyckelbegränsning. Den använder en commit automatiskt innan den agerar och en annan commit efteråt så återföring av transaktionen är omöjlig och inga triggers avfyras. Om vi vill återanvända tabellen behöver vi bara komma åt den befintliga tabelldefinitionen i databasen.

Vad är skillnaden mellan Drop och Truncate?

Både Drop- och Truncate-kommandon är DDL-kommandon och även auto-utfärdande uttalanden så att transaktionerna som utförs med dessa kommandon inte kan rullas tillbaka.

Den primära skillnaden mellan Drop och Truncate är att Drop-kommandot tar bort, inte bara alla data i en tabell, men det tar också bort tabellstrukturen permanent från databasen med alla referenser, medan Truncate-kommandot bara tar bort alla rader i en tabell, och det bevarar tabellstrukturen och dess referenser.

Om en tabell tappas är förhållandena till andra tabeller inte längre giltiga och integritetsbegränsningar och åtkomstbehörigheter tas också bort. Så om tabellen måste återanvändas måste den rekonstrueras med förhållandena, integritetsbegränsningar och även åtkomstbehörigheter. Men om en tabell trunkeras förblir tabellstrukturen och dess begränsningar för framtida användning, och så krävs inte någon av ovanstående rekreationer för återanvändning.

När dessa kommandon tillämpas måste vi vara försiktiga med att använda dem. Vi borde också ha en bättre förståelse för karaktären på dessa kommandon, hur de fungerar, och även noggrann planering innan vi använder dem för att förhindra att viktiga saker saknas. Slutligen kan båda dessa kommandon användas för att rensa databaserna snabbt och enkelt och förbrukar färre resurser.

Rekommenderas: