"空值"是對null值的中文叫法,兩者同指一個(gè)東西。
成都創(chuàng)新互聯(lián)公司是一家以成都網(wǎng)站建設(shè)公司、網(wǎng)頁設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、網(wǎng)站推廣、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為成都格柵板等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
我想樓主是想弄清楚null(空值)與零長度字符串''(或稱為空字符串)之間的區(qū)別。
在代碼里"零長度字符串"用一對沒有間隔的英文引號''表示,它的數(shù)據(jù)類型是明確的即屬于字符型,存儲"零長度字符串"是要占用物理磁盤空間的;
而null值其數(shù)據(jù)類型是未知的,它不會(huì)占用物理磁盤空間。
在不存在約束限制的情況我們可以將Null值插入任何數(shù)據(jù)類型的字段里,而零長度字符串''只能插入到字符型數(shù)據(jù)類型字段中,插入其它類型字段會(huì)報(bào)錯(cuò)。
我們通過實(shí)測看看null(空值)與零長度字符串''(或稱為空字符長)之間的區(qū)別:
1)輸出所有的記錄
select * from students;
注意:此例輸出源表中的全部記錄,含null(空值)和零長度字符串''.
2)輸出電話為Null(空值)的記錄
select * from students where phone is null;
注意:此例只輸出含Null(空值)的記錄
3)輸出電話為零長度字符串的記錄
select * from students where phone='';
注意:此例只輸出含零長度字符串的記錄。
4)輸出電話不是零長度字符串的記錄
select * from students where phone'';
注意:此例MySQL的處理方式有些特別,連含Null值得記錄也排除掉了,這與MSSQL的處理方式有點(diǎn)不一致。
5)輸出電話不為空的記錄
select * from students where phone is not null;
注意:此例只要不含Null值的記錄都予以輸出
這個(gè)很簡單,用' '就可以了就是單引號中間空一格來表示。 如查詢有空格的數(shù)據(jù): SELECT tg_id FROM tg_user WHERE tg_username=' '
如果有空格可以用"[ nam e]"(括號)標(biāo)注即可;
sql:select [file name], [file name] from [table name];
解釋:括號通用于表面和字段,通過上面的語句就可以查詢出“table name”表中的“file name”和“file name”。
備注:盡量不要用空格,用“_”(下劃線) 代替,更符合sql的命名規(guī)范。
空值是一個(gè)比較特殊的字段。在mysql數(shù)據(jù)庫中,在不同的情形下,空值往往代表不同的含義。這是mysql數(shù)據(jù)庫的一種特性。如在普通的字段中(字符型的數(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ù)庫中執(zhí)行sql語句時(shí)經(jīng)常會(huì)遇到的一個(gè)陷阱:空值不一定為空。在操作時(shí),明明插入的是一個(gè)空值的數(shù)據(jù),但是最后查詢得到的卻不是一個(gè)空值。
在mysql數(shù)據(jù)庫中,null對于一些特殊類型的列來說,其代表了一種特殊的含義,而不僅僅是一個(gè)空值。對于這些特殊類型的列,各位讀者主要是要記住兩個(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è)空值。