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

เปลี่ยน Default Value ของคอลัมน์ใน MySQL ด้วย ALTER TABLE MODIFY

เมื่อต้องการเปลี่ยนค่า Default ของคอลัมน์ที่มีอยู่แล้ว ให้ใช้ ALTER TABLE ... MODIFY ระบุ Data Type เดิมพร้อม Default ใหม่

สร้างตารางมี Default 'John'

mysql> create table DemoTable (
    UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName varchar(20) DEFAULT 'John'
);

ตรวจสอบ Default เดิม

mysql> desc DemoTable;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| UserId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| UserName | varchar(20) | YES  |     | John    |                |
+----------+-------------+------+-----+---------+----------------+

ทดสอบ Default เดิม (INSERT ไม่ระบุ Name)

mysql> insert into DemoTable values();
+--------+----------+
| UserId | UserName |
+--------+----------+
| 1      | John     |
+--------+----------+

เปลี่ยน Default เป็น 'Chris'

mysql> alter table DemoTable modify UserName varchar(20) DEFAULT 'Chris';

ตรวจสอบหลังเปลี่ยน

mysql> desc DemoTable;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| UserId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| UserName | varchar(20) | YES  |     | Chris   |                |
+----------+-------------+------+-----+---------+----------------+

ทดสอบ Default ใหม่

mysql> insert into DemoTable values();
+--------+----------+
| UserId | UserName |
+--------+----------+
| 1      | John     |
| 2      | Chris    |
+--------+----------+

Syntax

ALTER TABLE table_name MODIFY column_name data_type DEFAULT new_default;

ข้อสังเกตสำคัญ

  • ข้อมูลเก่าไม่เปลี่ยน - แถวที่ Insert ก่อนเปลี่ยน Default ยังคงค่าเดิม (John)
  • ต้องระบุ Data Type ใหม่ทั้งหมด - แม้จะไม่เปลี่ยน Type ก็ต้องเขียนซ้ำ
  • DROP DEFAULT - ลบ Default: ALTER TABLE t MODIFY col VARCHAR(20) DEFAULT NULL;
  • NOT NULL + DEFAULT - ต้องระบุ DEFAULT หากเพิ่ม NOT NULL

CHANGE vs MODIFY

-- CHANGE (เปลี่ยนชื่อได้)
ALTER TABLE DemoTable CHANGE UserName UserName VARCHAR(20) DEFAULT 'Chris';

-- MODIFY (ไม่เปลี่ยนชื่อ - สั้นกว่า)
ALTER TABLE DemoTable MODIFY UserName VARCHAR(20) DEFAULT 'Chris';

MySQL 8.0+ ใช้ ALTER COLUMN ... SET DEFAULT

ALTER TABLE DemoTable ALTER COLUMN UserName SET DEFAULT 'Chris';

(Syntax มาตรฐาน SQL Standard)