DROP TABLE / TRUNCATE în MySQL

Baze de date și tabele Toate versiunile MySQL și MariaDB

Șterge un tabel cu totul (DROP) sau doar toate rândurile lui (TRUNCATE).

Sintaxă
DROP TABLE IF EXISTS tabel;
TRUNCATE TABLE tabel;

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 TABLE pe serverul de producție crezând că ești pe cel de test. Verifică baza de date curentă cu SELECT DATABASE();.
  • Rulezi TRUNCATE pe un tabel spre care arată chei străine. MySQL refuză comanda.

Comenzi înrudite