千鋒教育2023版Java面試寶典Java面試200題(含美團、字節(jié)、阿里大廠真
2023-07-19 20:13 作者:bili_87736235224 | 我要投稿

一、語義不清晰
null 和 not null 使用空值代表的含義是不一樣的
null 我們可以認(rèn)為這一列的值是未知的,空值則可以認(rèn)為我們知道這個值,只不過它是空的而已
比如一張表的 name 字段是 null,我們可以認(rèn)為不知道名字是什么,反之如果是空字符串我們知道沒有名字,它就是一個空值
二、聚合函數(shù)計算不準(zhǔn)確
對于 null 值的列,使用聚合函數(shù)的時候會忽略 null 值
比如表里面有兩條數(shù)據(jù),其中一條數(shù)據(jù)的 name 字段值為 null,如果對 name 進行 count,表示對非 null 列進行統(tǒng)計,所以查出來的結(jié)果為 1,這顯然是不符合我們的預(yù)期的。但是,在實際開發(fā)中一般都是對 id 字段進行統(tǒng)計數(shù)量
三、導(dǎo)致等號表達式失效
比如表的 name 字段是 null,如果使用等號查詢,是查不到的,必須使用?is null?才能查詢出來
四、導(dǎo)致值運算失效
比如表的 age 字段值是 null,加 1 之后結(jié)果還是 null,name 字段值是 null,concat 之后結(jié)果也變成了 null,這也是不符合我們預(yù)期的
五、導(dǎo)致一些意想不到的問題
比如表里面只有一條 name為高啟強的數(shù)據(jù),但是查詢不等于高啟強的數(shù)據(jù)時,顯示只有一條,這顯然不符合我們的預(yù)期
標(biāo)簽: