Để tạo cột cho phép NULL nhưng giá trị mặc định là chuỗi rỗng '' (khác NULL), sử dụng NULL DEFAULT ''.
Cú pháp
ALTER TABLE ten_bang ADD ten_cot kieu_du_lieu NULL DEFAULT '';
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE AllowNullDefaulNotNullDemo (
-> Id INT NOT NULL AUTO_INCREMENT,
-> UserName VARCHAR(20),
-> PRIMARY KEY(Id)
-> );
Thêm cột UserAddress cho phép NULL, mặc định rỗng:
mysql> ALTER TABLE AllowNullDefaulNotNullDemo
-> ADD UserAddress VARCHAR(20) NULL DEFAULT '';
Query OK, 0 rows affected (1.04 sec)
Kiểm tra cấu trúc:
+-------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | UserName | varchar(20) | YES | | NULL | | | UserAddress | varchar(20) | YES | | | | +-------------+-------------+------+-----+---------+----------------+
Cột Default hiển thị trống (chuỗi rỗng), cột Null = YES.
Chèn dữ liệu test:
mysql> INSERT INTO AllowNullDefaulNotNullDemo(UserAddress) VALUES('US');
mysql> INSERT INTO AllowNullDefaulNotNullDemo(UserAddress) VALUES(NULL);
mysql> INSERT INTO AllowNullDefaulNotNullDemo() VALUES();
Kết quả:
+-------------+ | UserAddress | +-------------+ | US | | NULL | | | +-------------+
Hàng 3 (INSERT không chỉ định cột) nhận giá trị mặc định '' (chuỗi rỗng), không phải NULL.
Phân biệt NULL vs Empty String
| Đặc điểm | NULL | Empty String '' |
|---|---|---|
| Ý nghĩa | Chưa có giá trị / không xác định | Giá trị là chuỗi rỗng |
| IS NULL | TRUE | FALSE |
| = '' | FALSE (NULL) | TRUE |
| LENGTH() | NULL | 0 |
| COUNT(cot) | Không đếm | Đếm |