MySQL NULL值是怎樣的存在数苫?

NULL概念

公司的DBA強制規(guī)定在創(chuàng)建表時臭觉,表中所有的字段必須都是NOT NULL昆雀,并根據(jù)業(yè)務(wù)需要給出默認值。


這個規(guī)定起初讓開發(fā)人員有點難受蝠筑,針對部分業(yè)務(wù)場景下的字段需要額外多做判斷狞膘,但是慢慢的大家也適應(yīng)了。
那么MySQL中NULL值是怎樣的存在菱肖,要特殊對待呢客冈?
很多人將NULL值類比為空字符串'',其實兩者是完全不同的兩個概念稳强。

  • ? NULL值场仲,表示未知的狀態(tài)

  • ? 空字符''退疫,表示一個確定的狀態(tài)渠缕,是一個長度為0的字符串

  • ? 例如student的name字段如果為NULL褒繁,表明當(dāng)前id下我們不知道名字亦鳞。

  • ? 如果name=='',表明我們知道當(dāng)前id下沒有名字棒坏。

NULL操作


上圖中與NULL值進行的比較操作燕差,包含NULL值的函數(shù)操作都返回NULL,即都為不確定坝冕,不為真徒探。
那么在我們?nèi)粘5腟QL中就不能將這些操作應(yīng)用到NULL上。例如喂窟,我們要查找課程號為NULL的數(shù)據(jù):
使用select * from student where classId = NULL;是查不到數(shù)據(jù)的测暗。
因為classId = NULL返回的NULL,where 語句只有返回true才會返回符合條件的數(shù)據(jù)磨澡。

  • ? MySQL提供了 IS NULLIS NOT NULL兩個運算符和IFNULL()函數(shù)來幫助處理NULL碗啄。
  • ? 當(dāng)字段中存在NULL值時,使用一些聚合函數(shù)需要注意稳摄,例如COUNT()稚字、MIN()、SUM()會`忽略NULL值

    student表中的數(shù)據(jù)總條數(shù)為7厦酬,但是count(classId)忽略掉了NULL值尉共。

  • ? 當(dāng)使用DISTINCT褒傅、GROUP BY或 時ORDER BY,所有 NULL值都被視為相等袄友。

  • ? 當(dāng)使用時ORDER BY, NULL值會首先顯示霹菊,如果指定DESC按降序排序剧蚣,則值會最后顯示。

  • ? NULL對使用索引查詢效率的影響:因為NULL值未知旋廷,無法使用比較操作鸠按,可能導(dǎo)致索引無法過濾數(shù)據(jù),而查詢最后不走索引饶碘。
    在查詢中使用IS NULL 或者 IS NOT NULL作為查詢條件目尖,可以讓索引得到利用。例如:
    select * from student where classId = 102變成select * from student where classId is not null and classId = 102;

  • ? 在MySQL中的記錄結(jié)構(gòu)中扎运,會使用額外空間存儲那些可能為NULL值的字段瑟曲,因此帶來空間上的開銷。

NULL值在MySQL中的特殊性豪治,需要開發(fā)人員在了解其特性的情況下正確使用洞拨,避免調(diào)入NULL值的陷阱,導(dǎo)致不必要的錯誤负拟。
為此DBA直接強制字段NOT NULL烦衣,保持一致的表結(jié)構(gòu)設(shè)計規(guī)則。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掩浙,一起剝皮案震驚了整個濱河市花吟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厨姚,老刑警劉巖衅澈,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遣蚀,居然都是意外死亡矾麻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門芭梯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來险耀,“玉大人,你說我怎么就攤上這事玖喘∷ξ” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵累奈,是天一觀的道長贬派。 經(jīng)常有香客問我急但,道長,這世上最難降的妖魔是什么搞乏? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任波桩,我火速辦了婚禮,結(jié)果婚禮上请敦,老公的妹妹穿的比我還像新娘镐躲。我一直安慰自己,他們只是感情好侍筛,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布萤皂。 她就那樣靜靜地躺著,像睡著了一般匣椰。 火紅的嫁衣襯著肌膚如雪裆熙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天禽笑,我揣著相機與錄音入录,去河邊找鬼。 笑死蒲每,一個胖子當(dāng)著我的面吹牛纷跛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邀杏,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼贫奠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了望蜡?” 一聲冷哼從身側(cè)響起唤崭,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脖律,沒想到半個月后谢肾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡小泉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年芦疏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片微姊。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡酸茴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兢交,到底是詐尸還是另有隱情薪捍,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站酪穿,受9級特大地震影響凳干,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜被济,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一救赐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溉潭,春花似錦净响、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赞别。三九已至畏陕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仿滔,已是汗流浹背惠毁。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留崎页,地道東北人鞠绰。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像飒焦,于是被迫代替她去往敵國和親蜈膨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Mysql 基礎(chǔ) /************ * 數(shù)據(jù)庫 * ************/ 1.連接數(shù)據(jù)庫 mysq...
    王利楨閱讀 441評論 0 1
  • 一牺荠、數(shù)據(jù)庫調(diào)優(yōu) 1.1翁巍、調(diào)優(yōu)維度 1、索引失效休雌、沒有充分利用到索引——索引建立 2灶壶、關(guān)聯(lián)查詢太多JOIN(設(shè)計缺陷...
    紫荊秋雪_文閱讀 155評論 0 0
  • 數(shù)據(jù)庫初識與基本查詢 1、數(shù)據(jù)庫的本質(zhì)就是文件: 讀文件勢必產(chǎn)生IO流杈曲,但好在數(shù)據(jù)庫有很多已經(jīng)寫好的流程可以幫我們...
    ast_Shlyn閱讀 267評論 0 0
  • MySQL不熟悉知識點 一驰凛、基礎(chǔ)部分 insert操作insert into 表名(字段1,字段2) values...
    LJH_9442閱讀 226評論 0 0
  • MySQL 一直是本人很薄弱的部分担扑,后面會多輸出 MySQL 的文章貢獻給大家恰响,畢竟 MySQL 涉及到數(shù)據(jù)存儲、...
    Theriseof閱讀 336評論 0 0