Cú pháp
ALTER TABLE ten_bang MODIFY COLUMN ten_cot VARCHAR(do_dai_moi) [NOT NULL];
Ví dụ: Từ VARCHAR(30) sang VARCHAR(100)
Trước khi thay đổi
mysql> DESC syntaxOfAlterCommandDemo;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| UserId | int(11) | YES | | NULL | |
| UserName | varchar(30) | YES | | NULL | |
| UserAge | int(11) | YES | | NULL | |
| UserCityName | varchar(50) | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+
Thực thi ALTER
mysql> ALTER TABLE syntaxOfAlterCommandDemo
-> MODIFY COLUMN UserName VARCHAR(100) NOT NULL;
Sau khi thay đổi
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| UserId | int(11) | YES | | NULL | |
| UserName | varchar(100) | NO | | NULL | |
| UserAge | int(11) | YES | | NULL | |
| UserCityName | varchar(50) | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+
Lưu ý quan trọng
- Mở rộng (tăng độ dài): An toàn, nhanh, không mất dữ liệu
- Thu hẹp (giảm độ dài): RỦI RO - dữ liệu dài hơn bị cắt mất (truncate) với warning
- NOT NULL: Chỉ thêm được nếu cột không có giá trị NULL
- Character set/collation: Giữ nguyên nếu không chỉ định
Các thay đổi khác cùng lúc