<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        數據庫中容易混淆空值

        來源:懂視網 責編:小采 時間:2020-11-09 13:35:37
        文檔

        數據庫中容易混淆空值

        數據庫中容易混淆空值:往往很多人都認為空值與空白或0值是一樣的,至少我在今天以前是這么認為的,其實空值并不與空白和0值是一回事。 Null值表示數值未知。沒有兩個相等的空值,比較兩個空值或空值和任意一個數比較返回的均是未知。 下面有以下從SQL 聯機叢書中的關于空值的信息
        推薦度:
        導讀數據庫中容易混淆空值:往往很多人都認為空值與空白或0值是一樣的,至少我在今天以前是這么認為的,其實空值并不與空白和0值是一回事。 Null值表示數值未知。沒有兩個相等的空值,比較兩個空值或空值和任意一個數比較返回的均是未知。 下面有以下從SQL 聯機叢書中的關于空值的信息

        往往很多人都認為空值與空白或0值是一樣的,至少我在今天以前是這么認為的,其實空值并不與空白和0值是一回事。 Null值表示數值未知。沒有兩個相等的空值,比較兩個空值或空值和任意一個數比較返回的均是未知。 下面有以下從SQL 聯機叢書中的關于空值的信息

        往往很多人都認為空值與空白或0值是一樣的,至少我在今天以前是這么認為的,其實空值并不與空白和0值是一回事。

        Null值表示數值未知。沒有兩個相等的空值,比較兩個空值或空值和任意一個數比較返回的均是未知。

        下面有以下從SQL 聯機叢書中的關于空值的信息:

      1. 若要測試查詢中的空值,在where 子句中使用IS NULL 或 IS NOT NULL
      2. 在SQL查詢結果時,空值在結果集內顯示為(null)
      3. 可通過以下方法在列中插入NULL,在INSERT 或UPDATE中顯式聲明NULL,或不使此列進入INSERT
      4. 不能將空值用于區分表中兩行所需的信息。
      5. 如下數據庫截圖所示:

        空值顯示為 (null),而左下角則是空白,空白不代表沒有數據,它是插入了空格數據而產生的。

        又比如,下列語句是完全不同的:

        mysql> INSERT INTO table (name) VALUES (NULL);
        mysql> INSERT INTO table (name) VALUES ("");
        

        兩個語句把值插入到name列,但是第一個插入一個NULL值而第二個插入一個空字符串。第一個的含義可以認為是“名字不知道”,而第二個則可意味著“他沒有沒有”。

        在SQL中,NULL值在于任何其他值甚至NULL值比較時總是假的(FALSE)。包含NULL的一個表達式總是產生一個NULL值,除非在包含在表達式中的運算符和函數的文檔中指出。在下列例子,所有的列返回NULL:

        mysql> SELECT NULL,1+NULL,CONCAT('Invisible',NULL);
        

        如果你想要尋找值是NULL的列,你不能使用=NULL測試。下列語句不返回任何行,因為對任何表達式,expr = NULL是假的:

        mysql> SELECT * FROM my_table WHERE phone = NULL;
        

        要想尋找NULL值,你必須使用IS NULL測試。下例顯示如何找出NULL電話號碼和空的電話號碼:

        mysql> SELECT * FROM my_table WHERE phone IS NULL;
        mysql> SELECT * FROM my_table WHERE phone = "";
        

        在MySQL中,就像很多其他的SQL服務器一樣,你不能索引可以有NULL值的列。你必須聲明這樣的列為NOT NULL,而且,你不能插入NULL到索引的列中。

        當用LOAD DATA INFILE讀取數據時,空列用''更新。如果你想要在一個列中有NULL值,你應該在文本文件中使用N。字面上的詞'NULL'也可以在某些情形下使用。見7.16 LOAD DATA INFILE句法。

        當使用ORDER BY時,首先呈現NULL值。如果你用DESC以降序排序,NULL值最后顯示。當使用GROUP BY時,所有的NULL值被認為是相等的。

        為了有助于NULL的處理,你能使用IS NULL和IS NOT NULL運算符和IFNULL()函數。

        對某些列類型,NULL值被特殊地處理。如果你將NULL插入表的第一個TIMESTAMP列,則插入當前的日期和時間。如果你將NULL插入一個AUTO_INCREMENT列,則插入順序中的下一個數字。

        在《SQL-3參考大全》中,作者這樣解釋NULL的含義:未知或未定義。對NULL來說,有很多有趣的特性。

        NULL是一個數據值,而且它屬于一個域(?)。是的,例如一個字符串字段,其中的空值只能是一個字符串。盡管它的內容沒有定義,或者未知,但它是字符串,這一點無可置疑。

        NULL不是非法數據,這一點SQL-3 標準也說的很清楚。我們沒有辦法保存零分之一,但可以保存空值。雖然它是空值,是未定義,是未知,可它也的確是一個合法的信息。

        運算黑洞:對于NULL,一般的運算都會返回NULL。比如加減乘除,這簡直就是一個黑洞一樣。永遠不會有什么數據等于NULL。當然,1不等于NULL,2也一樣。可是,NULL也不等于NULL。說一個NULL等于NULL是錯誤的。所以我們只能比較它“是”或“不是”。為了避免混亂,SQL-3標準有一些約定。比如表達式 x=NULL,結果應當是UNKOWN 。 而表達式“x is NULL”,就得看情況,如果x是NULL或 False,就返回Ture(?);x是非NULL,返回False。有點奇怪是不是,它基于NULL不等于NULL。 這個規則的確為SQL標準所支持,遇到這樣的數據庫系統,可不要感到驚訝。

        三值邏輯:《鹿鼎記》中的韋小寶,整人的秘訣之一就是“我問你話,是就點頭,不是就搖頭,不許你出聲!”的確,通常我們的邏輯觀點,總是基于這種二值邏輯體系,對就是對,錯就是錯。可在關系理論中,沒有這么簡單。有一種沒有絕對是非的情況存在:NULL。這就是關系理論的三值邏輯。

        還有一些常見的與NULL相關的情況。比如,統計函數(也有的文檔稱之為聚集函數、集函數)通常會忽略NULL。不過,假設有這樣一個表T:

        C
        -----
        1	
        2
        NULL
        NULL	
        

        我們分別執行兩個查詢:SELECT COUNT(*) FROM T和SELECT COUNT(C) FROM T, 猜猜會有什么不同?起初,我以為兩個結果應當一樣。結果,前一個是4,后一個是2。前一個等于4,顯然基于NULL也是數據這個事實;而后一個結果為2,是由于統計C列時,COUNT忽略了NULL。

        SQL-3標準中,搜索條件(WHERE和HAVING)只接受TRUE,而約束卻只拒絕FALSE,二者對NULL的接受態度相反。所以我們前面見到的ROOMS表才可以把空值寫入人員字段。而在排序時,卻又沒什么規律。SQL標準只作出了一個補充定義,所以每個DBMS的處理 ORDER BY的方法并不相同,當然NULL不是高于所有值就是低于所有值。

        在《SQL-3參考大全》中介紹了更詳細的關于NULL的內容。另外,書中還介紹了兩位數據庫專家C.J.Date和E.f.Codd關于NULL的不同論點(E.F.Codd甚至希望有四值邏輯)有興趣的朋友可以找來一讀。在實踐中,我們還會遇到一些有趣的事,特別是聯接查詢中, NULL讓我們的人生變得 “豐富多彩”。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        數據庫中容易混淆空值

        數據庫中容易混淆空值:往往很多人都認為空值與空白或0值是一樣的,至少我在今天以前是這么認為的,其實空值并不與空白和0值是一回事。 Null值表示數值未知。沒有兩個相等的空值,比較兩個空值或空值和任意一個數比較返回的均是未知。 下面有以下從SQL 聯機叢書中的關于空值的信息
        推薦度:
        標簽: 數據 空白 人都
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产亚洲精品国产福利在线观看| 亚洲中文字幕无码av| 高清免费久久午夜精品| 在线观看91精品国产不卡免费| 色天使亚洲综合在线观看| 18禁超污无遮挡无码免费网站国产| 亚洲人成高清在线播放| 国产v精品成人免费视频400条| 亚洲啪啪免费视频| 欧洲精品成人免费视频在线观看 | 亚洲电影国产一区| 99精品视频在线观看免费专区| 久久亚洲春色中文字幕久久久| 97免费人妻在线视频| 亚洲欧美中文日韩视频| 韩国18福利视频免费观看| 免费观看四虎精品成人| 日本亚洲成高清一区二区三区| 无码人妻久久一区二区三区免费| 亚洲精品福利在线观看| 99精品国产免费久久久久久下载| 亚洲Av无码国产一区二区| 中文字幕精品亚洲无线码一区 | 国产午夜无码视频免费网站| 免费无码国产在线观国内自拍中文字幕| 亚洲成年看片在线观看| 大地资源中文在线观看免费版 | 亚洲av永久无码一区二区三区| 亚洲精品无码永久在线观看| 久久精品视频免费| 中文字幕在线观看亚洲日韩| JLZZJLZZ亚洲乱熟无码| 精品无码AV无码免费专区| 成a人片亚洲日本久久| 亚洲熟妇无码乱子AV电影| 曰曰鲁夜夜免费播放视频| 特级aa**毛片免费观看| 亚洲国产高清在线| 国产一级高清视频免费看| 青青草原1769久久免费播放| 亚洲久热无码av中文字幕|