Ce face ALTER TABLE
ALTER TABLE schimbă un tabel fără să pierzi datele din el. Cele mai folosite operații sunt ADD COLUMN, DROP COLUMN, MODIFY (schimbă tipul) și RENAME COLUMN.
În MySQL poți alege poziția unei coloane noi cu AFTER alta_coloana sau FIRST. Pe tabele mari, unele modificări durează mult. Testează întâi pe o copie a bazei de date.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE clienti (
id INT PRIMARY KEY,
nume VARCHAR(50) NOT NULL
);
INSERT INTO clienti VALUES (1, 'Ana Pop'), (2, 'Dan Stoica');
Exemplul 1: Adăugarea unei coloane cu valoare implicită
Rândurile existente primesc valoarea implicită.
ALTER TABLE clienti ADD COLUMN puncte INT NOT NULL DEFAULT 0;
SELECT * FROM clienti;
Rezultat
+----+------------+--------+
| id | nume | puncte |
+----+------------+--------+
| 1 | Ana Pop | 0 |
| 2 | Dan Stoica | 0 |
+----+------------+--------+
Exemplul 2: Redenumirea și ștergerea unei coloane
ALTER TABLE clienti ADD COLUMN telefon VARCHAR(20);
ALTER TABLE clienti RENAME COLUMN nume TO nume_complet;
ALTER TABLE clienti DROP COLUMN telefon;
SELECT * FROM clienti;
Rezultat
+----+--------------+
| id | nume_complet |
+----+--------------+
| 1 | Ana Pop |
| 2 | Dan Stoica |
+----+--------------+
Exemplul 3: Poziția coloanei și schimbarea tipului
ALTER TABLE clienti ADD COLUMN email VARCHAR(100) AFTER id;
ALTER TABLE clienti MODIFY nume VARCHAR(120) NOT NULL;
DESCRIBE clienti;
Rezultat în MySQL
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| email | varchar(100) | YES | | NULL | |
| nume | varchar(120) | NO | | NULL | |
+-------+--------------+------+-----+---------+-------+
Greșeli frecvente
- Adaugi o coloană
NOT NULLfărăDEFAULTîntr-un tabel cu date. Rândurile existente primesc valoarea implicită a tipului (0 sau text gol), care poate să nu aibă sens. - La
MODIFYuiți regulile vechi ale coloanei.MODIFY nume VARCHAR(120)scoateNOT NULLdacă nu îl scrii din nou. - Micșorezi o coloană (
VARCHAR(200)înVARCHAR(20)) și textele mai lungi sunt tăiate sau comanda dă eroare.
Comenzi înrudite
CREATE TABLE: Creează un tabel nou, cu coloanele și tipurile lor de date.SHOW TABLES / DESCRIBE: Arată tabelele dintr-o bază de date și structura unui tabel.CREATE INDEX: Creează un index, care face căutările după o coloană mult mai rapide.