we moeten hier niet stoppen, er zijn veel andere verschillen tussen DELETE en TRUNCATE. Laten we ze bespreken met behulp van de onderstaande vergelijkingsgrafiek.
Vergelijkingstabel
Basis voor Comparsion | DELETE | TRUNCATE |
---|---|---|
basis- | U kunt de tuple opgeven die u wilt verwijderen. | Het verwijdert alle tuples uit een relatie. |
Taal | DELETE is een Data Manipulation Language-commando. | TRUNCATE is een Data Definition Language-commando. |
WAAR | De opdracht DELETE kan de WHERE-component bevatten. | De opdracht TRUNCATE heeft geen WHERE-component. |
Op gang brengen | DELETE-opdracht activeert de trigger die op de tafel is toegepast en zorgt ervoor dat ze worden geactiveerd. | Het TRUNCATE-commando activeert de triggers om te vuren niet. |
verwijdering | DELETE commando elimineert de tuples één voor één. | WISSEL de hele gegevenspagina met de tuples weg. |
Slot | DELETE-opdracht Vergrendel de rij / tupel voordat u deze wist. | TRUNCATE-opdracht vergrendelingsgegevenspagina voordat tabelgegevens worden verwijderd. |
Snelheid | DELETE-opdracht werkt trager in vergelijking met TRUNCATE. | TRUNCATE is sneller in vergelijking met DELETE. |
Transactie | DELETE registreert transactielogboek voor elke verwijderde tuple. | TRUNCATE neemt transactielog op voor elke verwijderde gegevenspagina. |
Herstellen | De opdracht DELETE kan worden gevolgd door COMMIT of ROLLBACK. | Het commando TRUNCATE kan niet ROLLBACK zijn. |
Definitie van DELETE
DELETE is een DAM-opdracht ( Data Manipulation Language ). De opdracht DELETE bestaat uit het verwijderen of verwijderen van de tuples uit een tabel of een relatie. Met DELETE kunnen we de volledige tuple elimineren, met al zijn attribuutwaarden uit een relatie. DELETE verwijdert niet de waarde van een bepaald attribuut, van een tuple uit de relatie.
U kunt de tuples filteren die u uit een tabel wilt verwijderen, met behulp van de WHERE- component. Als u de WHERE-component opgeeft in de DELETE-instructie, worden alleen de tuples verwijderd die voldoen aan WHERE-voorwaarde. Maar als u de WHERE-component in de DELETE-instructie niet opgeeft, worden standaard alle tuples uit een relatie verwijderd of verwijderd. WHERE-component in DELETE-instructie kan geneste SELECT-FROM-WHERE- instructies bevatten.
De syntaxis van de opdracht DELETE is als volgt:
DELETE FROM table_name WHERE [ conditon ];
De opdracht DELETE werkt alleen in een enkele relatie of tabel tegelijk. In het geval dat u tuple uit verschillende relaties wilt verwijderen, moet u voor elk een andere DELETE-opdracht plaatsen. Maar het verwijderen van tuple uit één relatie kan de referentiële integriteit van de database schenden, die kan worden opgelost met behulp van triggers. Als de opdracht DELETE de referentiële integriteit schendt, worden alle referentiële triggers (indien opgegeven) geactiveerd die de verwijderactie op de tuples van verschillende relaties die de verwijderde tuples verwijst, propageert.
DELETE-opdracht sluit eerst de rij of het tuple die moet worden verwijderd en verwijder vervolgens de tuple één voor één . Daarom zijn meer vergrendelingen en bronnen vereist die het langzamer maken . U kunt de wijzigingen laten aanbrengen door DELETE statement permanent te verwijderen met COMMIT, of u kunt de database resetten met ROLLBACK .
Definitie van TRUNCATE
TRUNCATE lijkt op de opdracht DELETE omdat ook tuples uit een relatie worden verwijderd. Het verschil is dat het volledige tuples uit een relatie verwijdert. Als de opdracht TRUNCATE wordt uitgevoerd, worden volledige gegevens uit de tabel verwijderd, waarbij elk tuple samen met alle bijbehorende kenmerkwaarden uit de tabel wordt verwijderd. Maar de structuur van de tabel bestaat nog steeds in de database. U kunt dus opnieuw de tupels in de tabel invoeren. TRUNCATE is een Data Definition Language-commando.
De syntaxis van het TRUNCATE-commando is als volgt:
TRUNCATE TABLE table_name ;
Net als DELETE werkt TRUNCATE niet rij voor rij op tabelgegevens. In plaats daarvan werkt het op de gegevenspagina's die de tabelgegevens opslaan. Nu, wanneer TRUNCATE gegevenspagina's verwijdert, moet het de vergrendeling op gegevenspagina's verwerven in plaats van tupels. Daarom resulteert dit in minder behoefte aan vergrendelingen en bronnen waardoor TRUNCATE sneller wordt vergeleken met DELETE.
Het uitvoeren van de opdracht TRUNCATE activeert geen triggers omdat deze rij niet per rij gegevens verwerkt. TRUNCATE kan niet worden uitgevoerd als er naar de tabel wordt verwezen door een externe sleutel . Nadat de opdracht TRUNCATE de tabelgegevens heeft verwijderd, kan deze nooit meer worden hersteld .
Belangrijkste verschillen tussen DELETE en TRUNCATE in SQL
- Het belangrijkste verschil tussen DELETE en TRUNCATE is dat je met DELETE de gespecificeerde tuple uit een relatie kunt verwijderen. Maar het gebruik van TRUNCATE zal hele tuples uit een relatie verwijderen.
- DELETE is DML-opdracht terwijl TRUNCATE de DDL-opdracht is.
- DELETE gebruikt de WHERE-component om de record / tuples te filteren die moeten worden verwijderd. TRUNCATE vereist echter geen WHERE-component omdat het alle tuples verwijdert, dus het is niet nodig om de tuples te filteren.
- DELETE activeert referentiële triggers die op de tabellen worden toegepast. Maar TRUNCATE ontsteekt geen triggers op de tafel.
- Met de opdracht DELETE worden de tuples één voor één uit de tabel verwijderd, in de volgorde worden ze verwerkt. TRUNCATE werkt echter niet één voor één op tuples. In plaats daarvan werkt TRUNCATE op de gegevenspagina die tabelgegevens opslaat.
- DELETE verwerft de vergrendeling op de tuple voordat deze wordt verwijderd, terwijl, TRUNCATE de vergrendeling op de gegevenspagina verwerft voordat de gegevenspagina wordt verwijderd.
- TRUNCATE is sneller in vergelijking met het DELETE-commando.
- VERWIJDER record transactielog voor elke tuple terwijl TRUNCATE transactielog registreert voor elke gegevenspagina.
- Nadat u gegevens hebt verwijderd met behulp van TRUNCATE, kan deze nooit meer worden teruggehaald, terwijl u uw gegevens kunt herstellen die u met de opdracht DELETE hebt verwijderd.
Conclusie:
Als u het verwijderen van records uit de tabel wilt aanpassen, kunt u de opdracht DELETE gebruiken. Als u de tabel wilt leegmaken, dwz dat u geen gegevens in een tabel wilt achterlaten, gebruikt u de opdracht TRUNCATE.