Truncate (SQL)
TRUNCATE is een opdracht in SQL waarmee de gegevens uit een tabel van een database worden gewist. Het effect van een TRUNCATE-opdracht komt overeen met dat van een DELETE-opdracht zonder WHERE-clausule, maar is fysiek niet hetzelfde.

Beschrijving 
De TRUNCATE-opdracht wordt gebruikt voor het legen van een database tabel en is geklassificeerd als een data definition language (DDL) opdracht. De opbouw en de exacte werking van de TRUNCATE-opdracht kan verschillend zijn per databasesysteem. Over het algemeen wordt de tabel verwijderd en opnieuw aangemaakt. Hierbij worden handelingen overgeslagen die bij een DELETE-opdracht wel worden uitgevoerd, zoals de  trigger. Dit levert vooral bij grote tabellen tijdwinst op. Het zorgt er echter ook voor dat de TRUNCATE-opdracht niet altijd gebruikt kan worden, bijvoorbeeld bij tabellen met een verwijzende sleutel in MySQL.

Opvallende verschillen tussen diverse databasesystemen:
 Bij het gebruik van IDENTITY kolommen wordt de waarde van deze kolommen meestal teruggezet naar de beginwaarde (de SEED). In PostgreSQL kan ervoor gekozen worden om de bestaande waarde te behouden.
 In de meeste databases is het niet mogelijk om een TRUNCATE-opdracht terug te draaien (met ROLLBACK). Bij PostgreSQL en Microsoft SQL Server kan dit wel.
 Bij tabellen met een verwijzende sleutel kan meestal opgegeven worden of deze verwijzende tabellen ook geleegd moeten worden (met CASCADE). Bij MySQL is dit echter niet mogelijk.

Syntaxis 
In de simpelste vorm wordt de TRUNCATE-opdracht als volgt opgebouwd:
TRUNCATE TABLE tabelnaam
Bij sommige databasesystemen is  optioneel. Ook kunnen bij sommige databasesystemen meerdere tabellen opgegeven worden, gescheiden door een komma.

Voorbeelden 
Voor het legen van de tabel 'bedrijven' kan de volgende opdracht worden gebruikt:
TRUNCATE TABLE bedrijven

Indien ook de tabel 'medewerkers' bestaat, met een verwijzende sleutel naar 'bedrijven', kunnen de volgende opdrachten worden gebruikt:
TRUNCATE TABLE medewerkers, bedrijven
Of wanneer CASCADE wordt ondersteund:
TRUNCATE TABLE bedrijven CASCADE
In dat geval wordt de tabel 'medewerkers' ook automatisch geleegd.

Zie ook 
 SQL
 DELETE
 INSERT
 UPDATE
 SELECT

SQL
Relationele database