鍍金池/ 問答/Java  PHP  Python  C#  數(shù)據(jù)庫/ mysql字段defalut ''的區(qū)別

mysql字段defalut ''的區(qū)別

以下語句中,有什么區(qū)別么?老大說有,不是特別的清楚

`record_name` varchar(50) DEFAULT '' COMMENT '記錄名'
`record_name` varchar(50) NOT NULL DEFAULT '' COMMENT '記錄名'
回答
編輯回答
女流氓

1、可以從下圖中看到,如果是null的話,每一條記錄開始時(shí)都會(huì)在最前面有額外的字節(jié)標(biāo)識(shí),如第12列是null,就需要用額外的兩字節(jié) 0800來標(biāo)識(shí)

圖片描述

圖片描述

圖片描述

2、同時(shí)如果索引中有null會(huì)導(dǎo)致索引不生效
3、做比較是 可能會(huì)出現(xiàn) null == 0的不正確結(jié)果

2017年7月7日 15:14
編輯回答
你的瞳

一樓正解,之前有個(gè)同事搞測(cè)試環(huán)境上題主中的第一種方式,到了正式環(huán)境是第二種方式,測(cè)試時(shí)沒有發(fā)現(xiàn)問題,到了正式環(huán)境就報(bào)錯(cuò)了,提示字段類型錯(cuò)誤,就是因?yàn)檎江h(huán)境里insert語句有null設(shè)置

2018年9月8日 04:24
編輯回答
神曲

第一個(gè)可以置為null,第二個(gè)不可以。。。

2017年11月8日 12:25
編輯回答
夢(mèng)一場(chǎng)

設(shè)置了default關(guān)鍵字過后,not null感覺有沒有都沒太大的區(qū)別

2017年3月1日 16:00
編輯回答
別傷我

除了一樓說的寫入的區(qū)別之外,還有兩點(diǎn)區(qū)別:

  1. MySQLNULL是需要占空間的;
  2. 在索引中沒有辦法存儲(chǔ)NULL;

因此,這也就是為什么我們經(jīng)??吹?code>NOT NULL DEFAULT ''的原因所在。

2017年5月3日 20:54