《MYSQL教程小心陷阱!MySQL中處理Null時需注意兩點》要點:
本文介紹了MYSQL教程小心陷阱!MySQL中處理Null時需注意兩點,希望對您有用。如果有疑問,可以聯系我們。
MYSQL實例MySQL數據庫是一個基于結構化數據的開源數據庫.SQL語句是MySQL數據庫中核心語言.不過在MySQL數據庫中執行SQL語句,需要小心兩個陷阱.
MYSQL實例陷阱一:空值不一定為空
MYSQL實例空值是一個比較特殊的字段.在MySQL數據庫中,在不同的情形下,空值往往代表不同的含義.這是MySQL數據庫的一種特性.如在普通的字段中(字符型的數據),空值就是表示空值.但是如果將一個空值的數據插入到TimesTamp類型的字段中,空值就不一定為空.此時為出現什么情況呢(如下圖)?
MYSQL實例
MYSQL實例我先創建了一個表.在這個表中有兩個字段:User_id(其數據類型是int)、Date(其數據類型是TimesTamp).現在往這個表中插入一條記錄,其中往Date字段中插入的是一個NULL空值.可是當我們查詢時,其結果顯示的卻是插入記錄的當前時間.這是怎么一回事呢?其實這就是在MySQL數據庫中執行SQL語句時經常會遇到的一個陷阱:空值不一定為空.在操作時,明明插入的是一個空值的數據,但是最后查詢得到的卻不是一個空值.
MYSQL實例在MySQL數據庫中,NULL對于一些特殊類型的列來說,其代表了一種特殊的含義,而不僅僅是一個空值.對于這些特殊類型的列,各位讀者主要是要記住兩個.一個就是筆者上面舉的TimesTamp數據類型.如果往這個數據類型的列中插入Null值,則其代表的就是系統的當前時間.另外一個是具有auto_increment屬性的列.如果往這屬性的列中插入Null值的話,則系統會插入一個正整數序列.而如果在其他數據類型中,如字符型數據的列中插入Null的數據,則其插入的就是一個空值.
MYSQL實例陷阱二:空值不一定等于空字符
MYSQL實例在MySQL中,空值(Null)與空字符('')相同嗎?答案是否定的.請大家先來看下圖的演示.
MYSQL實例
MYSQL實例在同一個數據庫表中,同時插入一個Null值的數據和一個''空字符的數據,然后利用Select語句進行查詢.最后顯示的結果如上圖所示.顯然其顯示的結果是不相同的.從這個結果中就可以看出,空值不等于空字符.這就是在MySQL中執行SQL語句遇到的第二個陷阱.在實際工作中,空值數據與空字符往往表示不同的含義.數據庫管理員可以根據實際的需要來進行選擇.
MYSQL實例如對于電話號碼等字段,可以默認設置為空值(表示根本不知道對方的電話號碼)或者設置為空字符(表示后來取消了這個號碼)等等.由于他們在數據庫中會有不同的表現形式,所以數據庫管理員需要區別對待.筆者更加喜歡使用空值,而不是空字符.這主要是因為針對空值這個數據類型有幾個比較特殊的運算字符.如果某個字段是空字符,數據庫中是利用字段名稱來代替.相反,如果插入的是空值,則直接顯示的是NULL.這跟其他數據庫的顯示方式也是不同的.
MYSQL實例一是IS NULL 和IS NOT NULL關鍵字.如果要判斷某個字段是否含用空值的數據,需要使用特殊的關鍵字.其中前者表示這個字段為空,后者表示這個字段為非空.在Select語句的查詢條件中這兩個關鍵字非常的有用.如需要查詢所有電話號碼為空的用戶(需要他們補充電話號碼信息),就可以在查詢條件中加入is not null關鍵字.
MYSQL實例
MYSQL實例二是Count等統計函數,在空值上也有特殊的應用.如現在需要統計用戶信息表中有電話號碼的用戶數量,此時就可以使用count函數、同時將電話號碼作為參數來使用.因為在統計過程中,這個函數會自動忽略空值的數據.此時統計出來的就是有電話號碼的用戶信息.如果采用的是空字符的數據,則這個函數會將其統計進去.如下圖所示,統計剛才建立的兩條記錄時,系統統計的結果是1,而不是2.可見系統自動將Null值的數據忽略掉了.
MYSQL實例以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持維易PHP.
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4854.html