ใน MySQL คอลัมน์ VARCHAR โดยค่าเริ่มต้นไม่ได้รับ NULL (Strict mode) หากต้องการอนุญาตให้เก็บ NULL ได้ ให้ใช้ ALTER TABLE ... CHANGE กำหนด NULL DEFAULT NULL
รูปแบบคำสั่ง
ALTER TABLE yourTableName CHANGE yourColumnName yourColumnName datatype NULL DEFAULT NULL;
ตัวอย่างการใช้งาน
สร้างตารางคอลัมน์ VARCHAR (Default NOT NULL):
mysql> create table DemoTable1356 (FirstName varchar(30));
เปลี่ยนให้รับ NULL ได้:
mysql> alter table DemoTable1356 change FirstName FirstName varchar(30) NULL DEFAULT NULL;
เพิ่มข้อมูลทดสอบ (รวม NULL และ Empty):
mysql> insert into DemoTable1356 values('Adam'),('John'),(),('Bob'),(NULL);
ผลลัพธ์ (มี NULL จริง 2 แถว)
+-----------+ | FirstName | +-----------+ | Adam | | John | | NULL | | Bob | | NULL | +-----------+
คำอธิบาย:
CHANGE old_name new_name datatypeต้องระบุชื่อเดิมและชื่อใหม่ (แม้จะเหมือนกัน)NULL= อนุญาตให้เก็บ NULL ได้DEFAULT NULL= ค่าเริ่มต้นเป็น NULL (หากไม่ระบุค่าใน INSERT)- แตกต่างจาก
MODIFYที่ไม่ต้องระบุชื่อคอลัมน์ซ้ำ:ALTER TABLE t MODIFY col varchar(30) NULL DEFAULT NULL; - Empty string
''และNULLแตกต่างกัน INSERT()โดยไม่ระบุค่า จะใช้ Default (NULL)