亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

MySQL中處理空值時(shí)要注意的兩個(gè)問題

添加時(shí)間:2014-10-2 1:38:57  添加: 思海網(wǎng)絡(luò) 

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

  陷阱一:空值不一定為空

  空值是一個(gè)比較特殊的字段。在MySQL數(shù)據(jù)庫中,在不同的情形下,空值往往代表不同的含義。這是MySQL數(shù)據(jù)庫的一種特性。如在普通的字段中(字符型的數(shù)據(jù)),空值就是表示空值。但是如果將一個(gè)空值的數(shù)據(jù)插入到TimesTamp類型的字段中,空值就不一定為空。

  

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

  在MySQL數(shù)據(jù)庫中,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)與空字符(’’)相同嗎?答案是否定的。

  

  在同一個(gè)數(shù)據(jù)庫表中,同時(shí)插入一個(gè)Null值的數(shù)據(jù)和一個(gè)’’空字符的數(shù)據(jù),然后利用Select語句進(jìn)行查詢。最后顯示的結(jié)果如上圖所示。顯然其顯示的結(jié)果是不相同的。從這個(gè)結(jié)果中就可以看出,空值不等于空字符。這就是在MySQL中執(zhí)行SQL語句遇到的第二個(gè)陷阱。在實(shí)際工作中,空值數(shù)據(jù)與空字符往往表示不同的含義。數(shù)據(jù)庫管理員可以根據(jù)實(shí)際的需要來進(jìn)行選擇。如對(duì)于電話號(hào)碼等字段,可以默認(rèn)設(shè)置為空值(表示根本不知道對(duì)方的電話號(hào)碼)或者設(shè)置為空字符(表示后來取消了這個(gè)號(hào)碼)等等。由于他們?cè)跀?shù)據(jù)庫中會(huì)有不同的表現(xiàn)形式,所以數(shù)據(jù)庫管理員需要區(qū)別對(duì)待。筆者更加喜歡使用空值,而不是空字符。這主要是因?yàn)獒槍?duì)空值這個(gè)數(shù)據(jù)類型有幾個(gè)比較特殊的運(yùn)算字符。如果某個(gè)字段是空字符,數(shù)據(jù)庫中是利用字段名稱來代替。相反,如果插入的是空值,則直接顯示的是NULL。這跟其他數(shù)據(jù)庫的顯示方式也是不同的。

  一是IS NULL 和IS NOT NULL關(guān)鍵字。如果要判斷某個(gè)字段是否含用空值的數(shù)據(jù),需要使用特殊的關(guān)鍵字。其中前者表示這個(gè)字段為空,后者表示這個(gè)字段為非空。在Select語句的查詢條件中這兩個(gè)關(guān)鍵字非常的有用。如需要查詢所有電話號(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。可見系統(tǒng)自動(dòng)將Null值的數(shù)據(jù)忽略掉了。

關(guān)鍵字:MySQL、數(shù)據(jù)庫

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站