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

การตั้งค่า Default Value เป็น NULL ใน MySQL

ใน MySQL สามารถกำหนดค่าเริ่มต้น (Default Value) ของคอลัมน์เป็น NULL ได้โดยใช้คีย์เวิร์ด DEFAULT NULL ในขณะสร้างหรือแก้ไขตาราง ซึ่งจะทำให้คอลัมน์นั้นได้รับค่า NULL อัตโนมัติหากไม่ระบุค่าใน INSERT

ตัวอย่างการใช้งาน

สร้างตารางพร้อมกำหนด DEFAULT NULL:

mysql> CREATE TABLE DemoTable1440 (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName VARCHAR(20) DEFAULT NULL,
    -> StudentAge INT DEFAULT NULL
    -> );

เพิ่มข้อมูลหลายรูปแบบ:

mysql> INSERT INTO DemoTable1440 (StudentName, StudentAge) VALUES ('Chris', 21);  -- ระบุครบ
mysql> INSERT INTO DemoTable1440 VALUES ();                                    -- ไม่ระบุค่าเลย
mysql> INSERT INTO DemoTable1440 (StudentName) VALUES ('David');               -- ระบุแค่ชื่อ
mysql> INSERT INTO DemoTable1440 (StudentAge) VALUES (24);                     -- ระบุแค่อายุ

ผลลัพธ์ (คอลัมน์ที่ไม่ระบุจะเป็น NULL อัตโนมัติ):

mysql> SELECT * FROM DemoTable1440;
+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
|         1 | Chris       |         21 |
|         2 | NULL        |       NULL |
|         3 | David       |       NULL |
|         4 | NULL        |         24 |
+-----------+-------------+------------+

คำสั่งที่เกี่ยวข้อง

คำสั่งตัวอย่างคำอธิบาย
สร้างตารางใหม่CREATE TABLE t (col INT DEFAULT NULL)กำหนดตอนสร้าง
เพิ่มคอลัมน์ใหม่ALTER TABLE t ADD col INT DEFAULT NULLเพิ่มคอลัมน์พร้อม Default
เปลี่ยน Default คอลัมน์เดิมALTER TABLE t ALTER col SET DEFAULT NULLMySQL 8.0.13+
ลบ DefaultALTER TABLE t ALTER col DROP DEFAULTMySQL 8.0.13+
ดู Default ปัจจุบันSHOW COLUMNS FROM t LIKE 'col'ดูในคอลัมน์ Default

NULL vs ค่าว่าง ('') vs 0

แนวทางปฏิบัติที่ดี

  • ใช้ NULL สำหรับ "ไม่มีข้อมูล" หรือ "ยังไม่ได้กรอก" (Semantic correctness)
  • หลีกเลี่ยงการใช้ค่าพิเศษเช่น -1, 9999, 'N/A' แทน NULL
  • ใช้ IS NULL / IS NOT NULL ในการตรวจสอบ (ไม่ใช่ = NULL)
  • ฟังก์ชัน COALESCE(), IFNULL(), NULLIF() ช่วยจัดการ NULL ได้ง่าย
ค่าความหมายชนิดข้อมูล
NULLไม่มีค่า / ไม่ทราบค่าทุกชนิด
'' (Empty String)สตริงว่าง (มีค่า แต่อย่างว่าง)VARCHAR, TEXT, CHAR
0ศูนย์ (ค่าตัวเลข)INT, DECIMAL, FLOAT