สามารถเปลี่ยนลำดับคอลัมน์ในตารางที่มีอยู่แล้วได้ โดยใช้คำสั่ง ALTER TABLE ... MODIFY COLUMN ... AFTER ...
ตัวอย่างการใช้งาน
1. สร้างตารางเดิม (ลำดับ: Age, Name, CountryName)
mysql> CREATE TABLE DemoTable (
`Student_Key_Age` INT,
`Student_Key_Name` VARCHAR(20),
`Student_Key_CountryName` VARCHAR(20)
);
Query OK, 0 rows affected (0.64 sec)
2. เปลี่ยนลำดับ: ย้าย Age ให้อยู่หลัง Name
mysql> ALTER TABLE DemoTable
MODIFY COLUMN `Student_Key_Age` INT AFTER `Student_Key_Name`;
Query OK, 0 rows affected (1.15 sec)
Records: 0 Duplicates: 0 Warnings: 0
3. ตรวจสอบโครงสร้างตารางหลังเปลี่ยน
mysql> DESC DemoTable; +-------------------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------------------+-------------+------+-----+---------+-------+ | Student_Key_Name | varchar(20) | YES | | NULL | | | Student_Key_Age | int(11) | YES | | NULL | | | Student_Key_CountryName | varchar(20) | YES | | NULL | | +-------------------------+-------------+------+-----+---------+-------+
ไวยากรณ์ (Syntax)
ALTER TABLE table_name MODIFY COLUMN column_name column_definition [FIRST | AFTER column_name]
ตัวเลือกตำแหน่ง:
FIRST: ย้ายคอลัมน์ไปเป็นคอลัมน์แรกAFTER column_name: ย้ายคอลัมน์ไปวางหลังคอลัมน์ที่ระบุ
ข้อควรระวัง
- ต้องระบุ นิยามคอลัมน์เต็มรูปแบบ (Data Type, Length, Null/Not Null, Default ฯลฯ) ใหม่ทั้งหมดในคำสั่ง MODIFY
- การเปลี่ยนลำดับคอลัมน์อาจใช้เวลานานถ้าตารางมีข้อมูลมาก (ต้อง rebuild ตาราง)
- ไม่ส่งผลต่อข้อมูลที่มีอยู่ แต่ลำดับใน
SELECT *และINSERTที่ไม่ระบุคอลัมน์จะเปลี่ยนไปตามลำดับใหม่
สรุป
ใช้ ALTER TABLE ... MODIFY COLUMN ... AFTER ... เพื่อเปลี่ยนลำดับคอลัมน์ได้ ต้องระบุนิยามคอลัมน์ครบถ้วน และควรทดสอบก่อนใช้กับ Production