Ce face DROP TABLE / TRUNCATE
DROP TABLE șterge tabelul complet: structura și toate datele. Cu IF EXISTS, nu dă eroare dacă tabelul nu există.
TRUNCATE TABLE păstrează tabelul, dar șterge toate rândurile și repornește numărătoarea AUTO_INCREMENT de la 1. Este mult mai rapid decât DELETE fără WHERE.
Ambele sunt definitive și nu pot fi anulate cu ROLLBACK. Fă o copie de siguranță înainte.
Exemple
Exemplul 1: Ștergerea unui tabel temporar
A doua comandă nu dă eroare, deși tabelul nu mai există, datorită lui IF EXISTS. Comenzile nu afișează nimic.
CREATE TABLE import_temporar (linie TEXT);
DROP TABLE IF EXISTS import_temporar;
DROP TABLE IF EXISTS import_temporar;
Rezultat
Note (Code 1051): Unknown table 'exemplu_b0501213a10a.import_temporar'
Exemplul 2: Golirea unui tabel cu TRUNCATE
CREATE TABLE jurnal (
id INT AUTO_INCREMENT PRIMARY KEY,
mesaj VARCHAR(100)
);
INSERT INTO jurnal (mesaj) VALUES ('pornire'), ('eroare'), ('oprire');
TRUNCATE TABLE jurnal;
INSERT INTO jurnal (mesaj) VALUES ('după golire');
SELECT * FROM jurnal;
Rezultat în MySQL
+----+-------------+
| id | mesaj |
+----+-------------+
| 1 | după golire |
+----+-------------+
Greșeli frecvente
- Rulezi
DROP TABLEpe serverul de producție crezând că ești pe cel de test. Verifică baza de date curentă cuSELECT DATABASE();. - Rulezi
TRUNCATEpe un tabel spre care arată chei străine. MySQL refuză comanda.
Comenzi înrudite
DELETE: Șterge rânduri dintr-un tabel.CREATE TABLE: Creează un tabel nou, cu coloanele și tipurile lor de date.START TRANSACTION / COMMIT / ROLLBACK: Grupează mai multe modificări: fie se aplică toate (COMMIT), fie niciuna (ROLLBACK).