Sử dụng ALTER TABLE với nhiều mệnh đề ADD.
Cú pháp
ALTER TABLE tenBang ADD tenCot KIEU_DU_LIEU DEFAULT GIA_TRI, ADD INDEX(tenCot);
Tạo bảng demo
mysql> create table DemoTable (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(100),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.69 sec)
Kiểm tra cấu trúc ban đầu
mysql> desc DemoTable;
Kết quả
+-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(100) | YES | | NULL | | +-------+--------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec)
Thêm cột ArrivalDate với DEFAULT NOW() và index cùng lúc
mysql> alter table DemoTable
-> add ArrivalDate DATETIME DEFAULT NOW(),
-> add index(ArrivalDate);
Query OK, 0 rows affected (2.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
Kiểm tra cấu trúc sau khi thêm
mysql> desc DemoTable;
Kết quả - Cột ArrivalDate có DEFAULT CURRENT_TIMESTAMP và Key = MUL (index)
+-------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+-------------------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(100) | YES | | NULL | | | ArrivalDate | datetime | YES | MUL | CURRENT_TIMESTAMP | | +-------------+--------------+------+-----+-------------------+----------------+ 3 rows in set (0.01 sec)
Lưu ý:
- MySQL chuyển
DEFAULT NOW()thànhDEFAULT CURRENT_TIMESTAMP. - Có thể thêm nhiều cột và index trong một ALTER TABLE (chỉ khóa bảng một lần).
- Từ MySQL 8.0, nhiều thao tác ALTER TABLE hỗ trợ
ALGORITHM=INPLACE,LOCK=NONEđể giảm downtime.