關(guān)于mysql數(shù)據(jù)表中NULL值的詳解

使用null值

NULL 值就是沒(méi)有值或缺值。允許 NULL 值的列也允許在插入行時(shí)不給出該列的值。不允許 NULL 值的列不接受該列沒(méi)有值的行,換句話說(shuō),在插入或更新行時(shí),該列必須有值。

每個(gè)表列或者是 NULL 列,或者是 NOT NULL 列,這種狀態(tài)在創(chuàng)建時(shí)由表的定義規(guī)定。請(qǐng)看下面的例子:

輸入:

create?table?orders  (  order_num??????????int???????????????NOT?NULL?AUTO_INCREMENT,  order_date????????datetime???????NOT?NULL,  cust_id????????????????int???????????????NOT?NULL,  PRIMARY?KEY?(order_num)  )ENGINE?=?InnoDB;

分析:這條語(yǔ)句創(chuàng)建本書(shū)中所用的 orders 表。 orders 包含3個(gè)列,分別是訂單號(hào)、訂單日期和客戶ID。所有3個(gè)列都需要,因此每個(gè)列的定義都含有關(guān)鍵字 NOT NULL 。這將會(huì)阻止插入沒(méi)有值的列。如果試圖插入沒(méi)有值的列,將返回錯(cuò)誤,且插入失敗。

下一個(gè)例子將創(chuàng)建混合了 NULL 和 NOT NULL 列的表:

輸入:

create?table?vendors  (  vend_id?????????????????int??????????????????NOT?NULL?AUTO_INCREMENT,  vend_name?????????char(50)????????????NOT?NULL,  vend_address?????char(50)???????????NULL,  vend_city?????????????char(50)???????????NULL,  vend_state??????????char(5)?????????????NULL,  vend_zip?????????????char(10)???????????NULL,  vend_country??????char(50)???????????NULL,  PRIMARY?KEY?(vend_id?)  )ENGINE?=?InnoDB;

分析:這條語(yǔ)句創(chuàng)建本書(shū)中使用的 vendors 表。供應(yīng)商ID和供應(yīng)商名字列是必需的,因此指定為 NOT NULL 。其余5個(gè)列全都允許 NULL 值,所以不指定 NOT NULL 。 NULL 為默認(rèn)設(shè)置,如果不指定 NOT NULL ,則認(rèn)為指定的是 NULL 。

mysql null和空的區(qū)別

理解 NULL 不要把 NULL 值與空串相混淆。 NULL 值是沒(méi)有值,它不是空串。如果指定 ” (兩個(gè)單引號(hào),其間沒(méi)有字符),這在 NOT NULL 列中是允許的。空串是一個(gè)有效的值,它不是無(wú)值。 NULL 值用關(guān)鍵字 NULL 而不是空串指定。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享
站長(zhǎng)的頭像-小浪學(xué)習(xí)網(wǎng)月度會(huì)員