Drop vs Truncate
Drop och Truncate är två SQL-satser (Structured Query Language) som används i databashanteringssystem, 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 den relaterade SQL-satsen. Raderingsåtgärden är inte effektiv i det här fallet eftersom den använder mer lagringsutrymme än Drop och Truncate.
I fall, om vi vill kassera en tabell i en databas helt och hållet med alla data, tillåter SQL oss att enkelt utföra detta med Drop-satsen. Drop-kommandot ä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 kanske också vill bli av med all data i en tabell helt enkelt, men utan tabellen, och vi kan använda Truncate-satsen i SQL i ett sådant scenario. Truncate är också ett DDL-kommando och det eliminerar alla rader i en tabell men bevarar tabelldefinitionen för framtida användning.
Släppkommando
Som nämnts tidigare tar Drop-kommandot bort tabelldefinitionen och alla dess data, integritetsbegränsningar, index, utlösare och åtkomstprivilegier, som skapades på just den tabellen. Så det släpper det befintliga objektet från databasen helt och hållet, och relationerna till andra tabeller kommer inte längre att vara giltiga efter att ha kört kommandot. Det tar också bort all information om tabellen från dataordbok. Följande är den typiska syntaxen för att använda Drop-satsen på en tabell.
DROP TABLE
Vi måste helt enkelt ersätta tabellnamnet som vi vill ta bort från databasen i exemplet ovan på kommandot Drop.
Det är viktigt att påpeka att Drop-satsen inte kan användas för att ta bort en tabell som redan har refererats till av en främmande nyckel-begränsning. I så fall bör den refererande främmande nyckeln, eller den specifika tabellen, behöva släppas först. Drop-satsen kan inte heller tillämpas på systemtabellerna i databasen.
Eftersom Drop-kommandot är en automatisk commit-sats, kan operationen när den en gång avfyrats inte återställas och inga triggers kommer att aktiveras. När en tabell släpps kommer alla referenser till tabellen inte att vara giltiga, så om vi vill använda tabellen igen måste den återskapas med alla integritetsbegränsningar och åtkomstprivilegier. Alla relationer till de andra borden måste också hittas igen.
Truncate-kommando
Truncate-kommandot är ett DDL-kommando, och det tar bort alla rader i en tabell utan några användarspecificerade villkor, och frigör utrymmet som används av tabellen, men tabellstrukturen med dess kolumner, index och begränsningar förblir densamma. Truncate eliminerar data från en tabell genom att avallokera datasidorna som används för att lagra tabelldata, och endast dessa sidavallokeringar 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 ett lite snabbare uttalande än andra. Följande är den typiska syntaxen för Truncate-kommandot.
TRUNCATE TABLE
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 till av en främmande nyckel-begränsning. Den använder en commit automatiskt innan den agerar och en annan commit efteråt så återställning av transaktionen är omöjlig och inga triggers aktiveras. 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 commit-satser så att transaktionerna som utförs med dessa kommandon inte kan återställas.
Den primära skillnaden mellan Drop och Truncate är att kommandot Drop tar bort, inte bara all data i en tabell, utan det tar också bort tabellstrukturen permanent från databasen med alla referenser, medan Truncate-kommandot bara tar bort alla raderna i en tabell, och den bevarar tabellstrukturen och dess referenser.
Om en tabell tas bort kommer relationerna till andra tabeller inte längre att vara giltiga, och integritetsbegränsningarna och åtkomstprivilegierna kommer också att tas bort. Så om tabellen måste återanvändas måste den rekonstrueras med relationerna, integritetsbegränsningarna och även åtkomstbehörigheterna. Men om en tabell är trunkerad, kvarstår tabellstrukturen och dess begränsningar för framtida användning, så någon av ovanstående återskapningar krävs inte för återanvändning.
När dessa kommandon tillämpas måste vi vara försiktiga med att använda dem. Vi bör också ha en bättre förståelse för karaktären av dessa kommandon, hur de fungerar, och även en noggrann planering innan du använder dem för att förhindra att väsentligheter saknas. Slutligen kan båda dessa kommandon användas för att rensa upp databaserna snabbt och enkelt, vilket förbrukar färre resurser.