Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จัดเรียงลำดับคอลัมน์ในตาราง MySQL ใช้ ALTER TABLE ... FIRST/AFTER


วิธีจัดเรียงลำดับคอลัมน์

MySQL รองรับการเปลี่ยนลำดับคอลัมน์ด้วย ALTER TABLE ... CHANGE COLUMN ... FIRST|AFTER

ย้ายคอลัมน์ไปหน้าสุด (FIRST)

ALTER TABLE your_table
CHANGE COLUMN column_name column_name data_type FIRST;

ย้ายคอลัมน์ไปหลังคอลัมน์อื่น (AFTER)

ALTER TABLE your_table
CHANGE COLUMN column_name column_name data_type AFTER other_column;

ตัวอย่างการใช้งาน

ตารางเดิม: AddColumn (StudentId, StudentName)

SHOW CREATE TABLE AddColumn;
CREATE TABLE `addcolumn` (
  `StudentId` varchar(50) DEFAULT NULL,
  `StudentName` varchar(300) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

ย้าย StudentName ไปหน้า StudentId

ALTER TABLE AddColumn
CHANGE COLUMN StudentName StudentName VARCHAR(300) FIRST;

ตรวจสอบโครงสร้างหลังจัดเรียง

DESC AddColumn;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| StudentName | varchar(300) | YES  |     | NULL    |       |
| StudentId   | varchar(50)  | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+

ย้ายกลับไปเดิม (StudentName หลัง StudentId)

ALTER TABLE AddColumn
CHANGE COLUMN StudentName StudentName VARCHAR(300) AFTER StudentId;

ข้อควรระวัง

  • ต้องระบุ data_type ซ้ำแม้จะไม่เปลี่ยนชนิดข้อมูล
  • ตารางใหญ่จะใช้เวลานาน (Table Rebuild) - Lock ตารางขณะดำเนินการ
  • InnoDB: ใช้ Online DDL (ALGORITHM=INPLACE) ได้ในบางกรณี
  • ควรทดสอบใน Staging ก่อน Production

วิธีอื่น: CREATE TABLE NEW ... SELECT

CREATE TABLE new_table AS 
SELECT col3, col1, col2 FROM old_table;
-- แล้ว DROP ตารางเก่า RENAME ตารางใหม่

วิธีนี้เร็วกว่าสำหรับตารางใหญ่มาก แต่ต้องจัดการ Index/Constraint เอง