Het verschil tussen de opdracht DELETE en TRUNCATE is het meest voorkomende onderdeel van een interviewvraag. Ze worden voornamelijk gebruikt om gegevens uit de database te verwijderen. Het belangrijkste verschil tussen beide is dat de delete-instructie gegevens verwijdert zonder de identiteit van een tabel opnieuw in te stellen, terwijl de opdracht truncate de identiteit van een bepaalde tabel opnieuw instelt. . Dit artikel legt het volledige overzicht uit van de DELETE- en TRUNCATE-opdrachten en hun verschillen, die voornamelijk door elkaar worden gebruikt, maar totaal verschillend zijn.
Wat is een DELETE-opdracht?
Het is een DML- of gegevensmanipulatieopdracht gebruikt om records uit een tabel te verwijderen die niet vereist zijn in de database. Het verwijdert de volledige rij uit de tabel en produceert het aantal verwijderde rijen. We hebben de verwijdermachtiging voor de doeltabel nodig om deze opdracht uit te voeren. Het stelt ons ook in staat om specifieke records te filteren en te verwijderen met behulp van de WAAR clausule uit de tabel.
Het maakt duidelijk dat we een back-up van onze database hebben voordat we deze opdracht uitvoeren, omdat we de verwijderde records niet kunnen herstellen met deze query. Daarom, de back-ups van databases stellen ons in staat de gegevens te herstellen wanneer we deze in de toekomst nodig hebben.
De volgende syntaxis legt de DELETE-opdracht uit om gegevens uit de tabel te verwijderen:
DELETE FROM table_name WHERE condition;
Wat is een TRUNCATE-opdracht?
De afgekapte instructie is a DDL- of datadefinitietaalopdracht gebruikt om volledige gegevens uit de tabel te verwijderen zonder de tabelstructuur te verwijderen. Wij kunnen geen gebruik maken van de WAAR -clausule bij dit commando, zodat het filteren van records niet mogelijk is. Na het uitvoeren van deze opdracht, wij kan de verwijderde gegevens niet terugdraaien omdat het logboek niet wordt bijgehouden tijdens het uitvoeren van deze bewerking.
Met het commando truncate wordt de toewijzing van de pagina's in plaats van rijen en maakt een vermelding voor de pagina's voor het ongedaan maken van de toewijzing in plaats van rijen in transactielogboeken. Met deze opdracht worden de pagina's vergrendeld in plaats van de rijen; Er zijn dus minder sloten en middelen nodig. Houd er rekening mee dat we de instructie truncate niet kunnen gebruiken wanneer naar een tabel wordt verwezen door een refererende sleutel of deelneemt aan een geïndexeerde weergave.
Java sorteert een lijst
De volgende syntaxis legt de opdracht TRUNCATE uit om gegevens uit de tabel te verwijderen:
TRUNCATE TABLE table_name;
Belangrijkste verschillen tussen DELETE en TRUNCATE
De volgende punten verklaren de verschillen tussen de opdracht Verwijderen en Afkappen:
- De DELETE-instructie wordt gebruikt wanneer we enkele of alle records uit de tabel willen verwijderen, terwijl de TRUNCATE-instructie hele rijen uit een tabel zal verwijderen.
- DELETE is een DML-opdracht omdat deze alleen de tabelgegevens wijzigt, terwijl TRUNCATE een DDL-opdracht is.
- DELETE-opdracht kan de record/tuples filteren met behulp van de WHERE-clausule. De opdracht TRUNCATE staat echter het gebruik ervan niet toe WAAR -clausule, dus we kunnen rijen niet filteren tijdens het afkappen.
- DELETE activeert alles triggers verwijderen op tafel om te vuren. Er worden echter geen triggers geactiveerd bij de afkapbewerking, omdat deze niet op afzonderlijke rijen werkt.
- DELETE voert de verwijdering rij voor rij één voor één uit de tabel uit, in de volgorde waarin ze zijn verwerkt. TRUNCATE werkt echter op gegevenspagina's in plaats van op rijen, omdat volledige tabelgegevens in één keer worden verwijderd.
- DELETE-instructie verwijdert alleen records en reset de identiteit van de tafel , terwijl TRUNCATE de identiteit van een bepaalde tabel opnieuw instelt.
- DELETE-opdracht vereist meer vergrendelingen en databasebronnen omdat deze de vergrendeling op elke verwijderde rij verkrijgt. TRUNCATE verkrijgt daarentegen de vergrendeling op de gegevenspagina voordat de gegevenspagina wordt verwijderd; het vereist dus minder sloten en weinig middelen.
- DELETE-instructie maakt een vermelding in de transactielogboek voor elke verwijderde rij, terwijl TRUNCATE het transactielogboek voor elke gegevenspagina registreert.
- TRUNCATE-opdracht is sneller dan het DELETE-commando, omdat het de gegevenspagina's in plaats van rijen ongedaan maakt en gegevenspagina's registreert in plaats van rijen in transactielogboeken.
- Zodra de record is verwijderd met behulp van de opdracht TRUNCATE, kunnen we deze niet meer herstellen. We kunnen daarentegen de verwijderde gegevens herstellen die we tijdens de DELETE-bewerking hebben verwijderd.
VERWIJDER versus TRUNCATE-vergelijkingsdiagram
In het volgende vergelijkingsschema worden de belangrijkste verschillen op een snelle manier uitgelegd:
Vergelijkingsbasis | VERWIJDEREN | AFKORT |
---|---|---|
Definitie | De delete-instructie wordt gebruikt om enkele of meerdere records uit een bestaande tabel te verwijderen, afhankelijk van de opgegeven voorwaarde. | Met het commando truncate worden de volledige gegevens uit een bestaande tabel verwijderd, maar niet de tabel zelf. Het behoudt de tabelstructuur of het schema. |
Taal | Het is een DML-opdracht (Data Manipulation Language). | Het is een DDL-opdracht (Data Definition Language). |
WAAR | Het kan de WHERE-clausule gebruiken om een specifieke rij of gegevens uit de tabel te filteren. | Er wordt geen gebruik gemaakt van de WHERE-clausule om records uit de tabel te filteren. |
Toestemming | We hebben DELETE-toestemming nodig om deze opdracht te gebruiken. | We hebben ALTER-toestemming nodig om deze opdracht te gebruiken. |
Werken | Met deze opdracht worden records één voor één verwijderd. | Met deze opdracht verwijdert u de volledige gegevenspagina die de records bevat. |
Slot | Het vergrendelt de rij voordat deze wordt verwijderd. | Het vergrendelt de gegevenspagina voordat deze wordt verwijderd. |
Tabelidentiteit | Met deze opdracht wordt de tabelidentiteit niet opnieuw ingesteld, omdat alleen de gegevens worden verwijderd. | De tabelidentiteit wordt altijd opnieuw ingesteld. |
Transactie | Het houdt transactielogboeken bij voor elk verwijderd record. | Er worden geen transactielogboeken bijgehouden voor elke verwijderde gegevenspagina. |
Snelheid | De snelheid is laag omdat het het logboek bijhoudt. | De uitvoering ervan is snel omdat volledige gegevens tegelijk worden verwijderd zonder transactielogboeken bij te houden. |
Trekker | Dit commando kan ook de trigger activeren die op de tafel wordt toegepast, waardoor deze wordt geactiveerd. | Deze opdracht activeert niet de triggers die op de tafel worden toegepast om te vuren. |
Herstellen | Hiermee kunnen we de verwijderde gegevens herstellen met behulp van de COMMIT- of ROLLBACK-instructie. | We kunnen de verwijderde gegevens niet herstellen nadat we deze opdracht hebben uitgevoerd. |
Geïndexeerde weergave | Het kan worden gebruikt met geïndexeerde weergaven. | Het kan niet worden gebruikt met geïndexeerde weergaven. |
Ruimte | De DELETE-instructie neemt meer transactieruimte in beslag dan de truncate-instructie, omdat er voor elke verwijderde rij een logboek wordt bijgehouden. | De TRUNCATE-instructie neemt minder transactieruimte in beslag omdat er een transactielogboek wordt bijgehouden voor de gehele gegevenspagina in plaats van voor elke rij. |
Conclusie
In dit artikel hebben we een vergelijking gemaakt tussen de instructie Verwijderen en Afkappen. We zijn tot de conclusie gekomen dat een DELETE-opdracht wordt gebruikt wanneer we het verwijderen van records uit de tabel willen aanpassen. En een TRUNCATE-opdracht wordt gebruikt als we geen records of gegevens in de tabel willen achterlaten, d.w.z. we willen de tabel leegmaken.