Drop vs Truncate
Drop and Truncate är två SQL-formuleringar (Structured Query Language) som används i Database Management Systems, där vi vill ta bort dataposter från en databas. Både Drop och Truncate-satser tar bort hela data i en tabell och det relaterade SQL-satsen. Ta bort funktionen är inte effektiv i det här fallet eftersom det använder mer lagringsutrymmen än Drop och Truncate.
Om vi vill skicka ett bord i en databas helt och hållet med alla data, så tillåter SQL oss att enkelt utföra detta med hjälp av Drop-satsen. Slagkommandot ä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. Den raderar hela informationen i en tabell, såväl som tabellstrukturen från databasen. Vi kan också önska att bli av med alla data i ett bord helt enkelt, men utan tabellen, och vi kan använda Truncate statement i SQL i ett sådant scenario. Truncate är också ett DDL-kommando och det eliminerar alla rader i ett bord men bevarar tabelldefinitionen samma för framtida användning.
Släpp kommandot
Som tidigare nämnts, tar bort kommandot bort tabeldetaljerna och alla dess data, integritetsbegränsningar, index, utlösare och åtkomstbehörigheter, som skapades på det aktuella tabellen. Så det släpper det befintliga objektet från databasen helt och relationerna till andra tabeller kommer inte längre att gälla efter att kommandot har körts. Dessutom tar den bort all information om tabellen från datalogik. Följande är den typiska syntaxen för att använda Drop-satsen på ett bord.
SLÄPP BORD
Vi måste helt enkelt ersätta det tabellnamn som vi vill ta bort från databasen i ovanstående exemplar av Drop-kommandot.
Det är viktigt att påpeka att Drop-uttalandet inte kan användas för att radera ett bord, vilket redan har refererats av en utländsk nyckelbegränsning. I det fallet måste den främmande nyckelbegränsningen eller den särskilda tabellen avvisas först. Också, Drop statement kan inte tillämpas på system tabeller i databasen.
Som Drop-kommandot är ett automatiskt fördragsförklaring, kan operationen en gång skjutas inte rulla tillbaka och inga utlösare kommer att avfyras. När ett bord släpps är alla referenser till bordet inte giltiga, och så, om vi vill använda bordet igen, måste det återskapas med alla integritetsbegränsningar och åtkomstbehörigheter. Alla relationer till de andra tabellerna måste också ligga igen.
Avkorta kommandot
Truncate-kommandot är ett DDL-kommando, och det tar bort alla rader i ett bord utan några användardefinierade villkor och släpper ut det utrymme som används av tabellen, men tabellstrukturen med dess kolumner, index och begränsningar förblir densamma. Truncate eliminerar data från ett bord genom att deallokera datasidorna som används för att lagra tabelldata, och endast dessa sidallokeringar hålls i transaktionsloggen. Så det utnyttjar 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 TABLE
Vi ska ersätta tabellnamnet, från vilket vi vill ta bort hela data, i ovanstående syntax.
Trunkate kan inte användas på ett bord som har refererats av en främmande nyckelbegränsning. Den använder sig av en förbindelse automatiskt innan den agerar och en annan förbindelse efteråt, så återgången till transaktionen är omöjlig, och inga utlösare 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 autofullförklaringar så att transaktionerna som utförs med dessa kommandon inte kan rullas tillbaka.
Den primära skillnaden mellan Drop och Truncate är att kommandot Drop tar bort, inte bara alla data i ett bord, men också det tar bort tabellstrukturen permanent från databasen med alla referenser, medan kommandot Truncate bara tar bort alla rader i ett bord , och det bevarar bordstrukturen och dess referenser.
Om en tabell tappas, är relationerna till andra tabeller inte längre giltiga, och integritetsbegränsningarna och åtkomstbehörigheterna kommer också att tas bort. Så om bordet måste återanvändas måste det rekonstrueras med relationerna, integritetsbegränsningarna och även åtkomstbehörigheterna. Men om ett bord trunkeras, bibehålls bordstrukturen och dess begränsningar för framtida bruk, och därför behöver inte någon av de ovan nämnda rekreationerna återanvändas.
När dessa kommandon tillämpas, måste vi vara försiktiga att använda dem. Vi borde också få en bättre förståelse för dessa kommandos natur, hur de fungerar, och också noggrann planering innan de används för att förhindra att saknas väsentliga. Slutligen kan båda kommandona användas för att snabbt och enkelt rensa databaserna och konsumera färre resurser.