ใช้ ALTER TABLE ... DROP COLUMN ลบคอลัมน์ (รองรับลบหลายคอลัมน์พร้อมกัน)
สร้างตาราง 4 คอลัมน์
mysql> CREATE TABLE DeleteColumnNameDemo (
-> Id INT,
-> Name VARCHAR(200),
-> Age INT,
-> Address VARCHAR(200)
-> );
ดูโครงสร้างก่อน
mysql> DESC DeleteColumnNameDemo; +---------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+-------+ | Id | int(11) | YES | | NULL | | | Name | varchar(200) | YES | | NULL | | | Age | int(11) | YES | | NULL | | | Address | varchar(200) | YES | | NULL | | +---------+--------------+------+-----+---------+-------+
ลบ Column Age และ Address
mysql> ALTER TABLE DeleteColumnNameDemo
-> DROP COLUMN Age,
-> DROP COLUMN Address;
Query OK, 0 rows affected (3.11 sec)
ดูโครงสร้างหลังลบ
mysql> DESC DeleteColumnNameDemo; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | Id | int(11) | YES | | NULL | | | Name | varchar(200) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+
ข้อควรระวัง
- Data Loss: ข้อมูลใน Column ที่ลบ จะหายถาวร (Backup ก่อน)
- Dependencies: หาก Column ถูกใช้ใน Index, FK, View, Trigger, Partition → ต้อง Drop Dependency ก่อน
- Lock: DROP COLUMN ต้อง Rebuild Table (Lock) ใช้
pt-online-schema-changeหรือgh-ostสำหรับ Production ใหญ่ - Instant DDL (MySQL 8.0.13+): DROP COLUMN ยังไม่รองรับ Instant (ต้อง Rebuild)
ลบ Column ที่มี Index/FK
-- ต้อง Drop Index/FK ก่อน ALTER TABLE t DROP FOREIGN KEY fk_name; ALTER TABLE t DROP INDEX idx_name; ALTER TABLE t DROP COLUMN col_name;
Best Practice: แทน DROP COLUMN ให้ SET NULL / RENAME Column / ADD New Column แล้ว Migrate Data ค่อย Drop เก่า (Safer, Rollback ได้)