作統計的時候,null是不計算在count之內的。因此字段的值最好不要設置爲null。mysql
好比:select count(user_id) as beyond_num from fs_users_added where credits<410 && user_id!=75語句,就統計不到null的數據行。sql
我須要統計出多少個用戶的學分比這個低。計算排名。結果因爲credits值有null的狀況,形成了數據統計不許確。明明是90個用戶超過,結果算出來是54個用戶。spa
解決辦法是:建立字段的時候,設置爲not null。或者一個默認值0索引
若是容許爲null,沒有插入值的狀況下,默認被mysql給字段一個默認值是null,此時即使是後續使用以下語句修改掉字段的默認值:it
ALTER TABLE `table_name`
MODIFY COLUMN `credits` float(10,2) UNSIGNED NULL DEFAULT 0 COMMENT '用戶學分' AFTER `user_id`;
原來存儲進去的null值也不會改變。因而形成了麻煩。table
此時的解決辦法是:使用以下語句,對值爲null的行都設置成一個默認值0
update table_name set credits=0 where credits is null
date
null與空值的區別select
一、null值就是null,空值是'',兩個引號(單引號雙引號均可以嗎?)float
二、null值是會佔用空間的。空值是不佔用空間的。統計
三、B樹索引時不會存儲NULL值的(也剛好解釋了,使用語句count統計的的時候不會計算在內)。MySQL字段儘可能避免NULL,應該指定列爲NOT NULL。而後給字段設置一個默認值0或者空''。