MySQL系列关于NUll值的经验总结分析教程


1.娴嬭瘯鏁版嵁

create table test_null (
    id int,
    name varchar(20),
    chinese int,
    math int,
    english int
) charset=utf8;

insert into test_null 
values
(1,null,80,70,68),
(2,'寮犱笁',60,null,null),
(3,'鏉庡洓',null,90,80),
(4,'鐜嬩簲',90,60,75),
(5,null,null,50,95);

缁撴灉濡備笅锛?/p>

鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩? src=

2.null鍊煎甫缁欐垜浠殑涓嶄究褰卞搷

1锛夎繃婊ゆ湁鎵涓嶅悓锛屽彧鑳戒娇鐢╥s null鎴栬卛s not null锛?/p>

# null鍊间笉鑳戒娇鐢?== 鎴?!= 鏉ユ瘮杈?
# 涓嬮潰涓ょ鐢ㄦ硶閮芥槸閿欒鐨?
select *
from test_null
where name == null;

select *
from test_null
where name != null;

# null鍊间竴鑸娇鐢?is null 鎴?is not null 鏉ユ瘮杈?
# 涓嬮潰涓ょ鐢ㄦ硶鎵嶆槸姝g‘鐨?
select *
from test_null
where name is null;

select *
from test_null
where name is not null;

2锛夊嚭鐜皀ull鍊硷紝浼氬鑷? - * /杩愮畻澶辨晥锛?/p>

select 	
	*,(chinese+math+english) as 鎬诲垎
from test_null;

缁撴灉濡備笅锛?/p>

鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩? src=

3锛塶ull鍊煎鑱氬悎鍑芥暟鏃犲奖鍝嶏紝鑱氬悎鍑芥暟浼氱洿鎺ュ拷鐣ull鍊硷紱

select 
    sum(chinese) 璇枃鎬诲垎,
    sum(math) 鏁板鎬诲垎,
    sum(english) 澶栬鎬诲垎
from test_null

缁撴灉濡備笅锛?/p>

鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩? src=

3.绌烘牸銆佺┖鍊煎拰null锛屾垜浠簲璇ユ庝箞鍒ゆ柇鍛紵

1锛夌┖鏍笺佺┖鍊煎拰null鐨勫尯鍒?/h3>

鐢ㄤ竴涓舰璞$殑姣斿柣鏉ヨ鏄庤繖涓夎呯殑鍖哄埆銆傞鍏堢┖鏍煎緢濂界悊瑙o紝涓涓┖瀛楃涓插悧锛屽崰鎹竴瀹氱殑绌洪棿澶у皬銆備笉濂界悊瑙g殑鍏跺疄鏄┖鍊煎拰null锛岀┖鍊肩浉褰撲簬涓涓澂瀛愭槸鐪熺┖鐘舵佺殑锛屼粈涔堜篃娌℃湁锛宯ull琛ㄧず鐨勬澂瀛愪腑鏈夌┖姘斻?/p>

MySQL涓紝null鏄湭鐭ョ殑锛屼笖鍗犵敤绌洪棿鐨勩俷ull浣垮緱绱㈠紩銆佺储寮曠粺璁″拰鍊奸兘鏇村姞澶嶆潅锛屽苟涓斿奖鍝嶄紭鍖栧櫒鐨勫垽鏂傜┖鍊?code>('')鏄笉鍗犵敤绌洪棿鐨勶紝娉ㄦ剰绌哄肩殑''涔嬮棿鏄病鏈夌┖鏍肩殑銆傚湪杩涜count()缁熻鏌愪竴鍒楄褰曟暟鐨勬椂鍊欙紝濡傛灉瀛樺湪null鍊硷紝浼氳绯荤粺鑷姩蹇界暐鎺夛紝浣嗘槸绌哄间細琚粺璁″埌鍏朵腑銆傚垽鏂璶ull浣跨敤鐨勬槸is null鍜?is not null锛屼絾鍒ゆ柇绌哄瓧绗︿娇鐢ㄧ殑鏄?code>= 锛?=锛?<>鏉ヨ繘琛屽鐞嗐傚浜?code>timestamp鏁版嵁绫诲瀷锛屽鏋滄彃鍏?code>null鍊?/code>锛屽垯鍑虹幇鐨勫兼槸褰撳墠绯荤粺鏃堕棿銆傛彃鍏ョ┖鍊硷紝鍒欎細鍑虹幇0000-00-00 00:00:00銆傚浜庡凡缁忓垱寤哄ソ鐨勮〃锛屾櫘閫氱殑鍒楀皢null淇敼涓?code>not null甯︽潵鐨勬ц兘鎻愬崌杈冨皬锛屾墍浠ヨ皟浼樻椂鍊欐病鏈夋瘮瑕佹敞鎰忋?/p>

2锛夊嚭鐜颁簡null鍊硷紝鎴戝簲璇ユ庝箞鍔烇紵

閫氳繃涓婇潰鐨勫垎鏋愭垜浠凡缁忕煡閬撲簡锛屽綋琛ㄤ腑瀛樺湪null鍊硷紝浼氬鑷村姞銆佸噺銆佷箻銆侀櫎杩愮畻澶辨晥銆傞偅涔堟垜浠庝箞澶勭悊杩欎簺null鍊兼瘮杈冨ソ鍛紵

绗竴绉嶆柟寮忥細鐩存帴浣跨敤is not null灏嗚繖浜沶ull鍊艰繃婊ゆ帀锛屼絾鏄繖鏍蜂細灏嗗叾瀹冮潪缂哄け鍊肩殑瀛楁杩囨护鎺夛紝閫犳垚鏁版嵁鐨勬氮璐广?/p>

绗簩绉嶆柟寮忥細涔熸槸鎴戜滑鎺ㄨ崘鐨勬柟寮忥紝鎴戜滑浣跨敤鍑芥暟杩涜缂哄け鍊肩殑濉厖銆?/p>

ifnull()鍜宑oalesce()鍑芥暟鐨勪娇鐢細

select 
    	id,
    	coalesce(name,'鏃犲悕姘?) name,
    	coalesce(chinese,0) chinese,
    	ifnull(math,0) math,
    	ifnull(english,0) english
from test_null;

缁撴灉濡備笅锛?/p>

鍦ㄨ繖閲屾彃鍏ュ浘鐗囨弿杩? src=

浠ヤ笂灏辨槸MySQL绯诲垪鍏充簬NUll鍊肩殑缁忛獙鎬荤粨鍒嗘瀽鐨勮缁嗗唴瀹癸紝鏇村鍏充簬MySQL涓殑NUll鍊肩殑璧勬枡璇峰叧娉ㄨ剼鏈箣瀹跺叾瀹冪浉鍏虫枃绔狅紒