空值是一個(gè)比較特殊的字段。在mysql數(shù)據(jù)庫(kù)中,在不同的情形下,空值往往代表不同的含義。這是mysql數(shù)據(jù)庫(kù)的一種特性。如在普通的字段中(字符型的數(shù)據(jù)),空值就是表示空值。但是如果將一個(gè)空值的數(shù)據(jù)插入到timestamp類型的字段中,空值就不一定為空。此時(shí)為出現(xiàn)什么情況呢
昆都侖網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,昆都侖網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為昆都侖上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的昆都侖做網(wǎng)站的公司定做!
我先創(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ì)于一些特殊類型的列來(lái)說(shuō),其代表了一種特殊的含義,而不僅僅是一個(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 insert into `test` (`name`,`intime`) values ('njdel', NULL);
Query OK, 1 row affected (0.01 sec)
修改
mysql update `test` set `intime`=NULL where `name`='njdel' limit 1;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
我實(shí)在看不出有什么問題。。
目前的版本無(wú)法禁止,
默認(rèn)為null則返回null(表示空的),默認(rèn)為not null則返回"",這是mysql的特點(diǎn)。
只能在客戶端處理。