Drop vs Truncate
Drop en Truncate is twee SQL (Structured Query Language)-stellings wat in databasisbestuurstelsels gebruik word, waar ons datarekords van 'n databasis wil verwyder. Beide Drop- en Truncate-stellings verwyder die hele data in 'n tabel en die verwante SQL-stelling. Uitvee-bewerking is nie effektief in hierdie geval nie, want dit gebruik meer bergingspasies as Drop en Truncate.
In die geval, as ons 'n tabel in 'n databasis heeltemal wil weggooi met al sy data, stel SQL ons in staat om dit maklik uit te voer met Drop-stelling. Drop-opdrag is 'n DDL (Data Definition Language) opdrag, en dit kan gebruik word om 'n bestaande databasis, tabel, indeks of aansig te vernietig. Dit verwyder die hele inligting in 'n tabel, sowel as die tabelstruktuur van die databasis. Ons wil dalk ook eenvoudig van al die data in 'n tabel ontslae raak, maar sonder die tabel, en ons kan Truncate-stelling in SQL in so 'n scenario gebruik. Truncate is ook 'n DDL-opdrag en dit skakel al die rye in 'n tabel uit, maar behou die tabeldefinisie dieselfde vir toekomstige gebruik.
Drop-opdrag
Soos vroeër genoem, verwyder Drop-opdrag die tabeldefinisie en al sy data, integriteitsbeperkings, indekse, snellers en toegangsregte, wat op daardie spesifieke tabel geskep is. Dit laat dus die bestaande voorwerp heeltemal van die databasis af, en die verhoudings met ander tabelle sal ook nie meer geldig wees nadat die opdrag uitgevoer is nie. Dit verwyder ook al die inligting oor die tabel uit data woordeboek. Die volgende is die tipiese sintaksis vir die gebruik van die Drop-stelling op 'n tabel.
DROP TABLE
Ons moet eenvoudig die tabelnaam vervang wat ons van die databasis wil verwyder in die bostaande voorbeeld van Drop-opdrag.
Dit is belangrik om daarop te wys dat Drop-stelling nie gebruik kan word om 'n tabel te skrap wat reeds deur 'n vreemde sleutelbeperking verwys is nie. In daardie geval moet die verwysende vreemde sleutelbeperking, of daardie spesifieke tabel eers laat val word. Drop-stelling kan ook nie op die stelseltabelle in die databasis toegepas word nie.
Aangesien Drop-opdrag 'n outo-commit-stelling is, kan die operasie sodra dit afgevuur is, nie teruggerol word nie en geen snellers sal geaktiveer word nie. Wanneer 'n tabel weggelaat word, sal al die verwysings na die tabel nie geldig wees nie, en dus, as ons die tabel weer wil gebruik, moet dit herskep word met al die integriteitsbeperkings en toegangsregte. Al die verwantskappe met die ander tabelle moet ook weer opgespoor word.
Truncate-opdrag
Truncate-opdrag is 'n DDL-opdrag, en dit verwyder al die rye in 'n tabel sonder enige gebruikergespesifiseerde voorwaardes, en stel die spasie vry wat deur die tabel gebruik word, maar die tabelstruktuur met sy kolomme, indekse en beperkings bly dieselfde. Truncate skakel data uit 'n tabel uit deur die databladsye wat gebruik word om die tabeldata te stoor, te deallokeer, en slegs hierdie bladsydeallokasies word in die transaksielogboek gehou. Dit gebruik dus minder transaksielogboekbronne en stelselhulpbronne in vergelyking met ander verwante SQL-opdragte soos Delete. So Truncate is 'n bietjie vinniger stelling as ander. Volgende is die tipiese sintaksis vir Truncate-opdrag.
TRUNCATE TABLE
Ons moet die tabelnaam, waaruit ons die hele data wil verwyder, vervang in die bogenoemde sintaksis.
Truncate kan nie gebruik word op 'n tabel wat deur 'n vreemde sleutelbeperking verwys is nie. Dit gebruik outomaties 'n commit voordat dit optree en 'n ander commit daarna, so terugrol van die transaksie is onmoontlik, en geen snellers word afgevuur nie. As ons die tabel wil hergebruik, hoef ons net toegang tot die bestaande tabeldefinisie in die databasis te kry.
Wat is die verskil tussen Drop en Truncate?
Beide Drop- en Truncate-opdragte is DDL-opdragte en ook outomatiese commit-stellings, sodat die transaksies wat met hierdie opdragte uitgevoer word, nie teruggerol kan word nie.
Die primêre verskil tussen Drop en Truncate is dat die Drop-opdrag nie net al die data in 'n tabel verwyder nie, maar dit verwyder ook die tabelstruktuur permanent van die databasis met alle verwysings, terwyl die Truncate-opdrag net alle verwyder die rye in 'n tabel, en dit behou die tabelstruktuur en sy verwysings.
As 'n tabel weggelaat word, sal die verhoudings met ander tabelle nie meer geldig wees nie, en die integriteitsbeperkings en toegangsregte sal ook verwyder word. As die tabel dus hergebruik moet word, moet dit gerekonstrueer word met die verhoudings, integriteitsbeperkings, en ook die toegangsregte. Maar as 'n tabel afgekap word, bly die tabelstruktuur en sy beperkings vir toekomstige gebruik, en dus word enige van die bogenoemde ontspannings nie vir hergebruik vereis nie.
Wanneer hierdie opdragte toegepas word, moet ons versigtig wees om dit te gebruik. Ons moet ook 'n beter begrip hê van die aard van hierdie opdragte, hoe hulle werk, en ook 'n paar noukeurige beplanning voordat dit gebruik word om te voorkom dat noodsaaklikhede mis. Ten slotte kan albei hierdie opdragte gebruik word om die databasisse vinnig en maklik skoon te maak, wat minder hulpbronne verbruik.