你知道m(xù)ysql中空值和null值的區(qū)別嗎
前言
最近發(fā)現(xiàn)帶的小伙伴寫sql對(duì)于空值的判斷方法不正確,導(dǎo)致程序里面的數(shù)據(jù)產(chǎn)生錯(cuò)誤,在此進(jìn)行一下整理,方便大家以后正確的判斷空值。以下帶來(lái)示例給大家進(jìn)行講解。
建表
create table test (colA varchar(10) not null,colB varchar(10) null);
向test表中插入數(shù)據(jù)
插入colA為null的數(shù)據(jù)
insert into test values (null,1);
此時(shí)會(huì)報(bào)錯(cuò),因?yàn)閏olA列不能為null。
插入colB為null的數(shù)據(jù)
insert into test values (1,null);
發(fā)現(xiàn)插入成功。
插入都為空的數(shù)據(jù)
insert into test values ('','');
插入colA為空的數(shù)據(jù)
insert into test values ('',null);
發(fā)現(xiàn)向colA一列插入空值成功,而colB列既可以插入空值,也可以插入NULL值。
總結(jié)一下,定義為NOT NULL的字段只能插入空值,不能插入null值,而NULL字段可以插入空值,也可以插入null值。
插入都不為空的數(shù)據(jù)
insert into test values (1,2);
開始查詢
可以發(fā)現(xiàn) is not null 只會(huì)過(guò)濾為null值的列,而<>會(huì)同時(shí)過(guò)濾空值和null值,所以要根據(jù)實(shí)際情況選擇過(guò)濾方式。
另外,判斷null值只能用 is null 或 is not null ,不能用 = 或 <>。
特別注意
1、在進(jìn)行count()統(tǒng)計(jì)某列的記錄數(shù)的時(shí)候,如果采用的NULL值,會(huì)別系統(tǒng)自動(dòng)忽略掉,但是空值是會(huì)進(jìn)行統(tǒng)計(jì)到其中的。
2、判斷NULL 用IS NULL 或者 is not null,SQL 語(yǔ)句函數(shù)中可以使用ifnull()函數(shù)來(lái)進(jìn)行處理,判斷空字符用 = 或者 <> 來(lái)進(jìn)行處理
3、對(duì)于MySQL特殊的注意事項(xiàng),對(duì)于timestamp數(shù)據(jù)類型,如果往這個(gè)數(shù)據(jù)類型插入的列插入NULL值,則出現(xiàn)的值是當(dāng)前系統(tǒng)時(shí)間。插入空值,則會(huì)出現(xiàn) ‘0000-00-00 00:00:00'
4、對(duì)于空值的判斷到底是使用is null 還是 = 要根據(jù)實(shí)際業(yè)務(wù)來(lái)進(jìn)行區(qū)分。
5、當(dāng)使用ORDER BY時(shí),首先呈現(xiàn)NULL值。如果你用DESC以降序排序,NULL值最后顯示。當(dāng)使用GROUP BY時(shí),所有的NULL值被認(rèn)為是相等的,故只顯示一行。
總結(jié)
到此這篇關(guān)于mysql中空值和null值的區(qū)別的文章就介紹到這了,更多相關(guān)mysql空值和null值的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 刪除數(shù)據(jù)庫(kù)中重復(fù)數(shù)據(jù)方法小結(jié)
在實(shí)際項(xiàng)目中,我們經(jīng)常會(huì)遇到刪除數(shù)據(jù)庫(kù)中重復(fù)數(shù)據(jù)的問(wèn)題,貌似是很簡(jiǎn)單的問(wèn)題哈,下面我們來(lái)探討下2014-07-07Mysql刪除重復(fù)數(shù)據(jù)通用SQL的兩種方法
本文主要介紹了Mysql刪除重復(fù)數(shù)據(jù)通用SQL的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08MySQL?驅(qū)動(dòng)中虛引用?GC?耗時(shí)優(yōu)化與源碼分析
這篇文章主要為大家介紹了MySQL?驅(qū)動(dòng)中虛引用?GC?耗時(shí)優(yōu)化與源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05MAC下MYSQL5.7.17連接不上的問(wèn)題及解決辦法
MAC下MYSQL5.7.17無(wú)法連接的問(wèn)題,下載安裝完SQLBench_community 6.3.9后新建MYSQL CONNECTIONS根本連接不上,提示為密碼錯(cuò),什么原因如何解決呢?今天小編給大家解答下2017-02-02mysql中復(fù)制表結(jié)構(gòu)的方法小結(jié)
這篇文章主要介紹了mysql中復(fù)制表結(jié)構(gòu)的方法,需要的朋友可以參考下2014-07-07mysql之validate_password_policy的使用
這篇文章主要介紹了mysql之validate_password_policy的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05