Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Có cần DEFAULT NULL trong MySQL không?


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ũ).