การใช้ CHANGE ใน ALTER TABLE หลายคอลัมน์
ใน MySQL คุณสามารถเปลี่ยนชื่อและ/หรือชนิดข้อมูลของหลายคอลัมน์พร้อมกันในคำสั่ง ALTER TABLE เดียวได้โดยใช้ CHANGE คั่นด้วยจุลภาค
รูปแบบคำสั่ง
ALTER TABLE your_table_name
CHANGE old_col1 new_col1 data_type,
CHANGE old_col2 new_col2 data_type,
...;
ตัวอย่างการใช้งานจริง
1. สร้างตารางเดิม
CREATE TABLE AlterMultipleColumns (
Id INT,
Name VARCHAR(200)
);
2. เปลี่ยนชื่อและชนิดข้อมูลพร้อมกัน
ALTER TABLE AlterMultipleColumns
CHANGE Id StudentId VARCHAR(10),
CHANGE Name StudentName VARCHAR(100);
3. ตรวจสอบผลลัพธ์
DESC AlterMultipleColumns;
| Field | Type | Null | Key | Default |
| StudentId | varchar(10) | YES | | NULL |
| StudentName | varchar(100) | YES | | NULL |
ความแตกต่าง: CHANGE vs MODIFY
| คำสั่ง | เปลี่ยนชื่อได้ | เปลี่ยนชนิดข้อมูลได้ | เปลี่ยนลำดับได้ (AFTER/FIRST) |
| CHANGE | ✅ ใช่ (ต้องระบุชื่อใหม่) | ✅ ใช่ | ✅ ใช่ |
| MODIFY | ❌ ไม่ได้ | ✅ ใช่ | ✅ ใช่ |
ตัวอย่างเพิ่มเติม: เปลี่ยนหลายอย่างพร้อมกัน
ALTER TABLE employees
CHANGE emp_id employee_id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
CHANGE emp_name full_name VARCHAR(150) NOT NULL AFTER employee_id,
CHANGE salary monthly_salary DECIMAL(10,2) DEFAULT 0,
MODIFY COLUMN department_id SMALLINT UNSIGNED DEFAULT 1,
ADD COLUMN hire_date DATE AFTER monthly_salary;
ข้อควรระวัง
- ⚡ Table Rebuild: การ CHANGE/MODIFY คอลัมน์จะทำให้ตาราง Rebuild ทั้งตาราง (Lock, Time, Disk Space)
- 🔒 ต้องระบุ Definition ครบถ้วน (Data Type, Length, Nullable, Default, Auto Increment, Comment)
- 📝 ใช้
SHOW CREATE TABLE ดู Definition เดิมก่อนแก้ไข
- 🧪 ทดสอบใน Staging ก่อน Production เสมอ
- 💡 MySQL 8.0+ รองรับ
ALGORITHM=INSTANT สำหรับบาง操作 (ADD COLUMN AT END, RENAME COLUMN)