首页
/
每日頭條
/
科技
/
mysql用什麼表達空值
mysql用什麼表達空值
更新时间:2024-10-05 02:22:35

作者:極客小俊

一個專注于web技術的80後

你不用拼過聰明人,你隻需要拼過那些懶人 你就一定會超越大部分人!


mysql用什麼表達空值(MySQL數據庫的表中NULL和空值)1

NULL也就是在字段中存儲NULL值

空字符串值也就是字段中存儲空字符('')

我們來通過測試來看看 他們彼此的區别:

1、占用空間區别

mysql> select length(NULL), length(''), length('1'); -------------- ------------ ------------- | length(NULL) | length('') | length('1') | -------------- ------------ ------------- | NULL | 0 | 1 | -------------- ------------ ------------- 1 row in set (0.03 sec)

小結 : 從上面的測試可以看出 字符串空值('')的長度是0,是不占用空間的, 而的NULL長度是NULL,其實它是占用空間的!

NULL columns require additional space in the row to record whether their values are NULL.

意思是: NULL列需要行中的額外空間來記錄它們的值是否為NULL

通俗意義上講: ('')字符串空值就像是一個真空狀态杯子,什麼都沒有,而NULL值就是一個裝滿空氣的杯子,雖然看起來都是一樣的,但是有着本質的區别

2、插入方式區别

#創建一個表,tb_test ​ create table tb_test( id int unsigned primary key auto_increment, one varchar(10) NOT NULL, two varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ​ ​ 插入進行驗證: ​ #全部插入 NULL,會失敗 原因就是指定的不允許插入NULL insert into tb_test(one,two) value (NULL,NULL); 1048 - Column 'one' cannot be null ​ #全部插入 空字符串值,成功 原因就是 ('') 字符 和 NULL的類型都不一樣 指定的是不允許插入NULL,又沒有說不允許('')空字符串!^.^ insert into tb_test(one,two) value ('',''); Query OK, 1 row affected #這也是剛剛講過not null約束測試insert語句的時候, 插入('')空字符串會成功的原因! ​

3、在查詢方式上的區别對比

#創建一個表,tb_test2 ​ create table tb_test2( id int unsigned primary key auto_increment, one varchar(10) NOT NULL, two varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ​ #模拟數據: insert into tb_test2(one,two) values (1,NULL); insert into tb_test2(one,two) values ('',2); insert into tb_test2(one,two) values (3,3); ​ #查詢one字段 #使用 is null 來查詢one字段 select * FROM tb_test2 where one is null; #結果就是一條也沒有,因為one字段并沒有代表為NULL的數據存在! ​ #使用 is not null 來查詢one字段 select * FROM tb_test2 where one is not null; #結果被全部查詢出來,因為one字段中的三個數據都不為NULL這個類型 ​ #使用 = 和 != 來查詢one字段 select * FROM tb_test2 where one =''; select * FROM tb_test2 where one != ''; ​ #查詢two字段 #使用 is null 來查詢two字段 select * FROM tb_test2 where two is null; #結果有一條符合NULL, ​ #使用 is not null 來查詢two字段 select * FROM tb_test2 where two is not null; #結果是不符合NULL的有兩條 ​ ​ #使用 = 來查詢two字段 select * FROM tb_test2 where two =''; ​ #使用 != 來查詢two字段 #這裡要注意的是為NULL的并沒有查詢出來,原因用 != 來查 字符串空('')的時候, 會把NULL也當做是字符串空來判斷吧! select * FROM tb_test2 where two != ''; ​ ​

小結: 如果要單純查NULL值列,則使用 is NULL去查,單純去查空值('')列,則使用 =''。

建議查詢方式:NULL值查詢使用is null/is not null查詢,而空值('')可以使用=或者!=、<、>等算術運算符來查!


4、在count()統計函數上的區别

#創建一個表,tb_test3 ​ create table tb_test3( id int unsigned primary key auto_increment, one varchar(10) NOT NULL, two varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ​ #模拟數據: insert into tb_test3(one,two) values (1,NULL); insert into tb_test3(one,two) values ('',2); insert into tb_test3(one,two) values (3,3); ​ #使用COUNT函數統計one字段: select count(one) from tb_test3; #結果為: 3 條, 說明 空字符串('') 會被count()函數統計! #使用COUNT函數統計two字段: select count(two) from tb_test3; #結果為: 2條, 原因是NULL 不會被count()函數統計到! ​ #注意: 使用 * 号來統計會把NULL算進去! SELECT count(*) FROM tb_test; ---------- | count(*) | ---------- | 3 | ---------- ​

實際開發到底是使用NULL值還是空值('')呢?

根據實際業務來進行區分, 個人建議在實際開發中如果沒有特殊的業務場景,可以直接使用空字符串值('') !

mysql用什麼表達空值(MySQL數據庫的表中NULL和空值)2

mysql用什麼表達空值(MySQL數據庫的表中NULL和空值)3

極客小俊@今日頭條,首發原創文章

如果喜歡話請 "點贊 評論 收藏" 一鍵三連

大家的支持就是我堅持下去的動力!

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
2023高職十大熱門專業 專科學什麼專業好
2023高職十大熱門專業 專科學什麼專業好
由于中國交通行業的發展,高速鐵路、火車、輕軌、磁懸浮等軌道技術有了很大的發展,在高職學校,這些專業的學生畢業後就業很受歡迎,就業前景也比較廣闊。高職學什麼專業畢業後吃香TOP1.社會體育在我國,健身行業起步較晚,但發展勢頭很好,有着很大的潛力。而且,正因為健身行業還是新興行業,因此需要大批的相關人才...
2024-10-05
oppo截屏按哪個鍵
oppo截屏按哪個鍵
1、先按住手機的電源鍵,在按音量的下鍵,兩個鍵同時按,即可截屏2、找到oppo手機的“設置”-“手體...
2024-10-05
手機識别功能怎麼用
手機識别功能怎麼用
1、打APP之後,首先點擊最上方搜索框右側的照相機圖标,2、接着就切換到了相機拍攝界面,在最下方我們...
2024-10-05
電腦桌面亮度怎麼調節
電腦桌面亮度怎麼調節
1、工具:電腦一台2、首先點擊最左下角的圖标,然後點擊“控制面闆”。3、在計算機設置中選擇“外觀”。...
2024-10-05
電腦防火牆在哪裡看 怎麼開啟或者關閉防火牆
電腦防火牆在哪裡看 怎麼開啟或者關閉防火牆
最近很多朋友咨詢關于怎麼關閉防火牆的問題,今天的這篇經驗就來聊一聊這個話題,希望可以幫助到有需要的朋友。1、首先打開電腦開始菜單,找到并選擇控制面闆。2、選擇系統和安全,找到并打開windows防火牆,可以看到防火牆的狀态。3、綠色表示防火牆開啟,紅色表示防火牆是關閉狀态,也可以直接點開看防火牆的狀...
2024-10-05
Copyright 2023-2024 - www.tftnews.com All Rights Reserved