從本質上區別: 1、空值不占空間 2、null值占空間 通俗的講: 空值就像是一個真空轉態杯子,什麼都沒有,而null值就是一個裝滿空氣的杯子,雖然看起來都是一樣的,但是有著本質的區別。 例子: 創建一個test表,colA是不可以存放null值的,colB是能存放null值的。 1 CREATE ...
從本質上區別: 1、空值不占空間 2、null值占空間 通俗的講: 空值就像是一個真空轉態杯子,什麼都沒有,而null值就是一個裝滿空氣的杯子,雖然看起來都是一樣的,但是有著本質的區別。 例子: 創建一個test表,colA是不可以存放null值的,colB是能存放null值的。
1 CREATE TABLE `test` ( 2 `colA` varchar(255) NOT NULL, 3 `colB` varchar(255) DEFAULT NULL 4 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入一個null值試試,會發生什麼情況?
1 INSERT INTO `test`(`colA`, `colB`) VALUES (NULL, NULL);
//出現報錯,原因是colA是不能插入null值。

1 INSERT INTO `test`(`colA`, `colB`) VALUES ('', '');
插入成功,說明欄位即使設置為null值的時候,是可以插入空值的


1 SELECT * FROM `test` WHERE colA IS NOT NULL
1 SELECT * FROM `test` WHERE colB IS NOT NULL
1 SELECT * FROM `test` WHERE colA <> '';
1 SELECT * FROM `test` WHERE colA <> '';
1 SELECT COUNT(colA) FROM `test`;
1 SELECT COUNT(colB) FROM `test`;