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

Thêm cột tại vị trí cụ thể trong bảng MySQL hiện có


Sử dụng ALTER TABLE ... ADD COLUMN ... AFTER để chèn cột mới sau một cột hiện có, hoặc FIRST để làm cột đầu tiên.

Cú pháp

-- Thêm sau cột hiện có
ALTER TABLE table_name 
ADD COLUMN new_column_name data_type AFTER existing_column_name;

-- Thêm làm cột đầu tiên
ALTER TABLE table_name 
ADD COLUMN new_column_name data_type FIRST;

Ví dụ minh họa

Bảng ban đầu có 3 cột:

mysql> CREATE TABLE changeColumnPosition (
  Id_Position1 INT,
  Name_Position2 VARCHAR(100),
  Address_Position4 VARCHAR(200)
);
Query OK, 0 rows affected (0.53 sec)

mysql> DESC changeColumnPosition;
+-------------------+--------------+------+-----+---------+-------+
| Field             | Type         | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| Id_Position1      | int(11)      | YES  |     | NULL    |       |
| Name_Position2    | varchar(100) | YES  |     | NULL    |       |
| Address_Position4 | varchar(200) | YES  |     | NULL    |       |
+-------------------+--------------+------+-----+---------+-------+

Thêm cột Age_Position3 sau Name_Position2:

mysql> ALTER TABLE changeColumnPosition 
ADD Age_Position3 INT AFTER Name_Position2;
Query OK, 0 rows affected (1.34 sec)

Kết quả:

+-------------------+--------------+------+-----+---------+-------+
| Field             | Type         | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| Id_Position1      | int(11)      | YES  |     | NULL    |       |
| Name_Position2    | varchar(100) | YES  |     | NULL    |       |
| Age_Position3     | int(11)      | YES  |     | NULL    |       |
| Address_Position4 | varchar(200) | YES  |     | NULL    |       |
+-------------------+--------------+------+-----+---------+-------+

Lưu ý

  • MySQL không hỗ trợ BEFORE column_name. Chỉ có AFTER và FIRST.
  • Thao tác này có thể khóa bảng (lock) nếu bảng lớn. Cân nhắc dùng pt-online-schema-change (Percona Toolkit) cho production.
  • Thứ tự cột không ảnh hưởng đến hiệu năng truy vấn, chỉ ảnh hưởng hiển thị (SELECT *, DESC).