最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

小心陷阱!MySQL中處理Null時(shí)需注意兩點(diǎn)

 更新時(shí)間:2016年06月22日 09:11:10   作者:Joker_Ye  
這篇文章主要為大家介紹了MySQL中處理Null時(shí)需注意的兩點(diǎn),很關(guān)鍵的兩點(diǎn),大家千萬要小心

MySQL數(shù)據(jù)庫(kù)是一個(gè)基于結(jié)構(gòu)化數(shù)據(jù)的開源數(shù)據(jù)庫(kù)。SQL語(yǔ)句是MySQL數(shù)據(jù)庫(kù)中核心語(yǔ)言。不過在MySQL數(shù)據(jù)庫(kù)中執(zhí)行SQL語(yǔ)句,需要小心兩個(gè)陷阱。

陷阱一:空值不一定為空

空值是一個(gè)比較特殊的字段。在MySQL數(shù)據(jù)庫(kù)中,在不同的情形下,空值往往代表不同的含義。這是MySQL數(shù)據(jù)庫(kù)的一種特性。如在普通的字段中(字符型的數(shù)據(jù)),空值就是表示空值。但是如果將一個(gè)空值的數(shù)據(jù)插入到TimesTamp類型的字段中,空值就不一定為空。此時(shí)為出現(xiàn)什么情況呢(如下圖)?

我先創(chuàng)建了一個(gè)表。在這個(gè)表中有兩個(gè)字段:User_id(其數(shù)據(jù)類型是int)、Date(其數(shù)據(jù)類型是TimesTamp)?,F(xiàn)在往這個(gè)表中插入一條記錄,其中往Date字段中插入的是一個(gè)NULL空值??墒钱?dāng)我們查詢時(shí),其結(jié)果顯示的卻是插入記錄的當(dāng)前時(shí)間。這是怎么一回事呢?其實(shí)這就是在MySQL數(shù)據(jù)庫(kù)中執(zhí)行SQL語(yǔ)句時(shí)經(jīng)常會(huì)遇到的一個(gè)陷阱:空值不一定為空。在操作時(shí),明明插入的是一個(gè)空值的數(shù)據(jù),但是最后查詢得到的卻不是一個(gè)空值。

在MySQL數(shù)據(jù)庫(kù)中,NULL對(duì)于一些特殊類型的列來說,其代表了一種特殊的含義,而不僅僅是一個(gè)空值。對(duì)于這些特殊類型的列,各位讀者主要是要記住兩個(gè)。一個(gè)就是筆者上面舉的TimesTamp數(shù)據(jù)類型。如果往這個(gè)數(shù)據(jù)類型的列中插入Null值,則其代表的就是系統(tǒng)的當(dāng)前時(shí)間。另外一個(gè)是具有auto_increment屬性的列。如果往這屬性的列中插入Null值的話,則系統(tǒng)會(huì)插入一個(gè)正整數(shù)序列。而如果在其他數(shù)據(jù)類型中,如字符型數(shù)據(jù)的列中插入Null的數(shù)據(jù),則其插入的就是一個(gè)空值。

陷阱二:空值不一定等于空字符

在MySQL中,空值(Null)與空字符('')相同嗎?答案是否定的。請(qǐng)大家先來看下圖的演示。

在同一個(gè)數(shù)據(jù)庫(kù)表中,同時(shí)插入一個(gè)Null值的數(shù)據(jù)和一個(gè)''空字符的數(shù)據(jù),然后利用Select語(yǔ)句進(jìn)行查詢。最后顯示的結(jié)果如上圖所示。顯然其顯示的結(jié)果是不相同的。從這個(gè)結(jié)果中就可以看出,空值不等于空字符。這就是在MySQL中執(zhí)行SQL語(yǔ)句遇到的第二個(gè)陷阱。在實(shí)際工作中,空值數(shù)據(jù)與空字符往往表示不同的含義。數(shù)據(jù)庫(kù)管理員可以根據(jù)實(shí)際的需要來進(jìn)行選擇。

如對(duì)于電話號(hào)碼等字段,可以默認(rèn)設(shè)置為空值(表示根本不知道對(duì)方的電話號(hào)碼)或者設(shè)置為空字符(表示后來取消了這個(gè)號(hào)碼)等等。由于他們?cè)跀?shù)據(jù)庫(kù)中會(huì)有不同的表現(xiàn)形式,所以數(shù)據(jù)庫(kù)管理員需要區(qū)別對(duì)待。筆者更加喜歡使用空值,而不是空字符。這主要是因?yàn)獒槍?duì)空值這個(gè)數(shù)據(jù)類型有幾個(gè)比較特殊的運(yùn)算字符。如果某個(gè)字段是空字符,數(shù)據(jù)庫(kù)中是利用字段名稱來代替。相反,如果插入的是空值,則直接顯示的是NULL。這跟其他數(shù)據(jù)庫(kù)的顯示方式也是不同的。

一是IS NULL 和IS NOT NULL關(guān)鍵字。如果要判斷某個(gè)字段是否含用空值的數(shù)據(jù),需要使用特殊的關(guān)鍵字。其中前者表示這個(gè)字段為空,后者表示這個(gè)字段為非空。在Select語(yǔ)句的查詢條件中這兩個(gè)關(guān)鍵字非常的有用。如需要查詢所有電話號(hào)碼為空的用戶(需要他們補(bǔ)充電話號(hào)碼信息),就可以在查詢條件中加入is not null關(guān)鍵字。

二是Count等統(tǒng)計(jì)函數(shù),在空值上也有特殊的應(yīng)用。如現(xiàn)在需要統(tǒng)計(jì)用戶信息表中有電話號(hào)碼的用戶數(shù)量,此時(shí)就可以使用count函數(shù)、同時(shí)將電話號(hào)碼作為參數(shù)來使用。因?yàn)樵诮y(tǒng)計(jì)過程中,這個(gè)函數(shù)會(huì)自動(dòng)忽略空值的數(shù)據(jù)。此時(shí)統(tǒng)計(jì)出來的就是有電話號(hào)碼的用戶信息。如果采用的是空字符的數(shù)據(jù),則這個(gè)函數(shù)會(huì)將其統(tǒng)計(jì)進(jìn)去。如下圖所示,統(tǒng)計(jì)剛才建立的兩條記錄時(shí),系統(tǒng)統(tǒng)計(jì)的結(jié)果是1,而不是2??梢娤到y(tǒng)自動(dòng)將Null值的數(shù)據(jù)忽略掉了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql中not?in隱含陷阱詳解

    mysql中not?in隱含陷阱詳解

    NOT?IN?的作用和?IN?恰好相反,NOT?IN?用來判斷表達(dá)式的值是否不存在于給出的列表中;如果不是,返回值為?1,否則返回值為?0,下面這篇文章主要給大家介紹了關(guān)于mysql中not?in隱含陷阱的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 一文了解mysql索引的數(shù)據(jù)結(jié)構(gòu)為什么要用B+樹

    一文了解mysql索引的數(shù)據(jù)結(jié)構(gòu)為什么要用B+樹

    這篇文章主要介紹了一文了解mysql索引的數(shù)據(jù)結(jié)構(gòu)為什么用B+樹,在節(jié)點(diǎn)中存儲(chǔ)某段數(shù)據(jù)的首地址,并且B+樹的葉子節(jié)點(diǎn)用了一個(gè)鏈表串聯(lián)起來,便于范圍查找,下文利用各種索引的數(shù)據(jù)結(jié)構(gòu)的方法與B+樹做對(duì)比,看看它的優(yōu)勢(shì)到底是什么,感興趣的小伙伴可以參考一下
    2022-04-04
  • 超出MySQL最大連接數(shù)問題及解決

    超出MySQL最大連接數(shù)問題及解決

    這篇文章主要介紹了超出MySQL最大連接數(shù)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 要慎用mysql的enum字段的原因

    要慎用mysql的enum字段的原因

    背景:時(shí)下都流行enum類型的使用tinyint,那enum就真沒有用的價(jià)值了么?
    2014-08-08
  • MySQL Binlog 日志處理工具對(duì)比分析

    MySQL Binlog 日志處理工具對(duì)比分析

    這篇文章主要介紹了MySQL Binlog 日志處理工具對(duì)比分析的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2021-03-03
  • MySQL中的JSON_CONTAINS函數(shù)舉例詳解

    MySQL中的JSON_CONTAINS函數(shù)舉例詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中JSON_CONTAINS函數(shù)舉例詳解的相關(guān)資料,MySQL JSON_CONTAINS函數(shù)可用于判斷JSON數(shù)組中是否包含某個(gè)元素,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 修改MYSQL密碼的幾種常用方法總結(jié)

    修改MYSQL密碼的幾種常用方法總結(jié)

    以下是對(duì)修改MYSQL密碼的幾種常用方法進(jìn)行了總結(jié)介紹,需要的朋友可以過來參考下
    2013-08-08
  • mysql免安裝版1067錯(cuò)誤終極解決辦法圖文教程

    mysql免安裝版1067錯(cuò)誤終極解決辦法圖文教程

    這篇文章主要介紹了mysql免安裝版1067錯(cuò)誤終極解決辦法圖文教程,從筆記本到pc端。本文給大家介紹的非常詳細(xì),需要的朋友參考下
    2017-01-01
  • MySQL基于GTID主從搭建

    MySQL基于GTID主從搭建

    這篇文章主要介紹了MySQL基于GTID主從搭建,文章首先通過xtarbackup來同步數(shù)據(jù)展開文章內(nèi)容詳情,感興趣的小伙伴可以參考一下
    2022-08-08
  • MySQL延遲問題和數(shù)據(jù)刷盤策略流程分析

    MySQL延遲問題和數(shù)據(jù)刷盤策略流程分析

    這篇文章主要介紹了MySQL延遲問題和數(shù)據(jù)刷盤策略流程分析,本文要給大家提到了mysql復(fù)制流程,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

麻江县| 双辽市| 平安县| 砀山县| 阿尔山市| 靖边县| 龙陵县| 蒙山县| 蓬莱市| 宝应县| 海门市| 淳化县| 蛟河市| 门头沟区| 麻栗坡县| 平利县| 商南县| 潞西市| 新昌县| 孟州市| 三亚市| 綦江县| 息烽县| 邹城市| 海伦市| 江阴市| 崇文区| 普洱| 大名县| 叶城县| 三河市| 铁岭市| 巫山县| 巩留县| 察雅县| 江阴市| 荔浦县| 连云港市| 邛崃市| 句容市| 随州市|