DELETE en TRUNCATE zijn beide SQL-opdrachten die worden gebruikt om gegevens uit een database te verwijderen in MariaDB, maar ze doen dit op verschillende manieren en hebben verschillende gevolgen.
1. DELETE is een DML (Data Manipulation Language) instructie. Met DELETE kan u bepaalde rijen uit een tabel verwijderen, afhankelijk van de conditie die u hebt gespecificeerd in de WHERE-clausule. Bijvoorbeeld, “DELETE FROM table WHERE column = value”. Als u geen WHERE-clausule opgeeft, zullen alle rijen worden verwijderd. Het zal ook triggers activeren die gekoppeld zijn aan DELETE-handelingen. Het gebruik van DELETE zonder een WHERE-clausule kan een langzaam proces zijn voor grote tabellen, omdat het elke rij afzonderlijk verwijdert en de ruimte niet onmiddellijk vrijmaakt.
1. TRUNCATE is een DDL (Data Definition Language) instructie. TRUNCATE verwijdert alle rijen uit een tabel, u kan geen specifieke rijen selecteren. Het is in wezen een snelkoppeling om een tabel te laten leegmaken en opnieuw te maken. Het wordt doorgaans sneller uitgevoerd dan DELETE voor het leegmaken van grote tabellen. Echter, het zal geen triggers activeren en het zal de ruimte die door de tabel wordt ingenomen onmiddellijk vrijmaken.
1. Het belangrijkste verschil is dat DELETE transacties zich in logs kunnen worden vastgelegd en dus kunnen worden teruggedraaid (tenzij de automatische commit is ingeschakeld). TRUNCATE kan niet worden teruggedraaid.