Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Thêm cột và index trong một câu truy vấn MySQL duy nhất

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ành DEFAULT 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.