Trả lời: KHÔNG CẦN
Trong MySQL, nếu không chỉ định DEFAULT cho cột cho phép NULL, giá trị mặc định **tự động là NULL**.
Ví dụ minh họa
Tạo bảng KHÔNG có DEFAULT NULL
mysql> CREATE TABLE DemoTable (FirstName VARCHAR(100));
Chèn dữ liệu: có giá trị, và không chỉ định giá trị (DEFAULT)
mysql> INSERT INTO DemoTable VALUES ('Chris');
mysql> INSERT INTO DemoTable VALUES (); -- DEFAULT (NULL)
mysql> INSERT INTO DemoTable VALUES (); -- DEFAULT (NULL)
mysql> INSERT INTO DemoTable VALUES ('David');
Kết quả
mysql> SELECT * FROM DemoTable;
+-----------+ | FirstName | +-----------+ | Chris | | NULL | | NULL | | David | +-----------+
Giải thích
INSERT INTO DemoTable VALUES ()(hoặc bỏ cột trong INSERT) → MySQL dùng implicit default.- Với cột nullable không có DEFAULT: implicit default = NULL.
- Với cột NOT NULL không có DEFAULT: implicit default = 0 (số), '' (chuỗi), '0000-00-00' (date) - **có warning/error nếu strict mode**.
Khi nào NÊN khai báo DEFAULT rõ ràng?
- Tài liệu hóa schema (documentation).
- Giá trị default khác NULL (vd:
status VARCHAR(20) DEFAULT 'active'). - Tương thích cross-database (PostgreSQL, SQL Server... có thể khác).
- Generated column, virtual column.
Khi nào KHÔNG được phép DEFAULT NULL
- Cột
PRIMARY KEY. - Cột
NOT NULL(trừ khi có default khác). - Cột
TIMESTAMPđầu tiên trong bảng (tự DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP trong version cũ).