Delete vs Truncate
Beide SQL (Struktuurnavraagtaal) opdragte, Delete en Truncate word gebruik om ontslae te raak van data wat in tabelle in 'n databasis gestoor is. Delete is 'n DML (Data Manipulation Language) stelling en dit verwyder sommige of al die rye van 'n tabel. Die 'Waar-klousule' word gebruik om die rye te spesifiseer wat geskrap moet word, en as die Where-klousule nie met Delete-stelling gebruik word nie, verwyder dit al die data in die tabel. Truncate is 'n DDL (Data Definition Language) stelling, en dit verwyder hele data uit die tabel. Beide hierdie opdragte vernietig nie die tabelstruktuur en die verwysings na die tabel nie, en slegs die data word verwyder soos nodig.
Vee stelling uit
Delete-stelling laat die gebruiker toe om data van 'n bestaande tabel in 'n databasis te verwyder gebaseer op 'n gespesifiseerde toestand, en die 'Waar-klousule' word gebruik om hierdie toestand te bepaal. Verwyder opdrag word na verwys as 'n aangetekende uitvoering, omdat dit slegs een ry op 'n slag uitvee, en hou 'n inskrywing vir elke ryskrap in die transaksielogboek. Dit veroorsaak dus dat die operasie stadiger word. Delete is 'n DML-stelling, en dit word dus nie outomaties toegepas terwyl die opdrag uitgevoer word nie. Daarom kan Delete-bewerking teruggerol word om weer toegang tot die data te verkry, indien nodig. Nadat die Delete-opdrag uitgevoer is, moet dit toegepas of teruggedraai word om veranderinge permanent te stoor. Verwyder stelling verwyder nie die tabelstruktuur van die tabel uit die databasis nie. Dit verdeel ook nie die geheuespasie wat deur die tabel gebruik word nie.
Die tipiese sintaksis vir Delete-opdrag word hieronder genoem.
DELETE FROM
of
DELETE FROM WHERE
Afkortingsverklaring
Truncate-stelling verwyder al die data van 'n bestaande tabel in 'n databasis, maar dit behou dieselfde tabelstruktuur, ook die integriteitsbeperkings, toegangsregte en die verhoudings met ander tabelle. Dit is dus nie nodig om die tabel weer te definieer nie, en die ou tabelstruktuur kan gebruik word as die gebruiker die tabel weer wil hergebruik. Truncate verwyder die hele data deur die databladsye wat gebruik word om data te hou, te deallokeer, en slegs hierdie bladsydeallokasies word in die transaksielogboek gehou. Daarom gebruik truncate-opdrag slegs 'n minder stelsel- en transaksielogboekbronne vir werking, so dit is vinniger as ander verwante opdragte. Truncate is 'n DDL-opdrag, dus gebruik dit outomatiese verpligtinge voor en na die uitvoering van die stelling. Gevolglik kan afkap nie die data op enige manier weer terugrol nie. Dit stel geheuespasie vry wat deur die tabel gebruik word na die uitvoering. Maar Truncate-stelling kan nie toegepas word op die tabelle waarna verwys word deur buitelandse sleutelbeperkings nie.
Volgende is die algemene sintaksis vir Truncate-stelling.
TRUNCATE TABLE
Wat is die verskil tussen Delete en Truncate?
1. Delete en Truncate-opdragte verwyder data van bestaande tabelle in 'n databasis sonder om die tabelstruktuur of ander verwysings na die tabel te benadeel.
2. Delete-opdrag kan egter gebruik word om spesifieke rye slegs in 'n tabel uit te vee deur 'n relevante voorwaarde te gebruik, of om al die rye sonder enige voorwaarde uit te vee, terwyl die Truncate-opdrag slegs gebruik kan word om hele data in die tabel uit te vee.
3. Delete is 'n DML-opdrag, en dit kan die bewerking terugrol indien nodig, maar Truncate is 'n DDL-opdrag, so dit is 'n outo-commit-stelling en kan op geen manier teruggerol word nie. Dit is dus belangrik om hierdie opdrag versigtig te gebruik in databasisbestuur.
4. Truncate-bewerking verbruik minder stelselhulpbronne en transaksielog-hulpbronne as die Delete-bewerking, daarom word Truncate as vinniger as Delete beskou.
5. Ook, Delete verdeel nie spasie wat deur die tabel gebruik word nie, terwyl Truncate die spasie wat gebruik word na uitvoering vrystel, dus is Delete nie doeltreffend in die geval van die verwydering van die hele data van 'n databasistabel nie.
6. Truncate word egter nie toegelaat om te gebruik wanneer die tabel deur 'n vreemde sleutelbeperking verwys word nie, en in daardie geval kan die Delete-opdrag gebruik word in plaas van Truncate.
7. Ten slotte, beide hierdie opdragte het voordele en ook nadele in die toepassing daarvan in databasisbestuurstelsels en die gebruiker moet bewus wees daarvan om hierdie opdragte toepaslik te gebruik om goeie resultate te behaal.