数据库建字段,默认值空和empty string有什么区别

mysql数据库,navicat工具。前提,该字段设置了NOT NULL,所以默认值是没法设为Null的。但是其他两个都可以,而且不影响正常的数据增删改查,也没法插入Null值。
大家看清楚了再回答哦。
我说的不是null和empty string,是“什么都不填”和 empty string的区别。
给个建表语句示例:
add coloum 'name' char(50) not null; 与
add coloum 'name' char(50) default '' not null;
的区别。
另外,无论是否设置default,由于字段本身限制了not null ,所以插入到数据库的值都会变成空字符串。
所以,我问:用“navicat”工具建表,默认值之间的区别。
回答前请先看图片,谢谢。

null=空;empty string=空字符串。可以了解为零字节长度的字符串。另外,要注意一点,就是sql查询的时候要是空的字符串会查询出为空,要是null的话,会提示sql语句有错。那这样的话,好像是数据库校对字符集的问题。

拓展:

1、我们把表中的每一行叫做一个"记录",每一个记录包含这行中的所有信息,就像在通讯录数据库中某个人全部的信息,但记录在数据库中并没有专门的记录名,常常用它所在的行数表示这是第几个记录。在数据库中存放在表行列交叉处的数据叫做"值",它是数据库中最基本的存储单元,它的位置要由这个表中的记录和字段来定义。

2、在数据库中,大多数时,表的"列"称为"字段" ,每个字段包含某一专题的信息。就像"通讯录"数据库中,"姓名"、"联系电话"这些都是表中所有行共有的属性,所以把这些列称为"姓名"字段和"联系电话"字段。但是有时候,字段也不是表中的列,比如用as将列的内容经计算,"存入"另一个字段。如:一个表"T"中只有列"ID",内容为"int"值"1"。运用"select id, id * 5 as abc from T",得出的结果为id abc。

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-03-09
Empty String 插入(insert)时,可以不指定列,如果是默认值空会报 Field 'xxx' doesn't have a default value,太深入的我也不知道
第2个回答  2014-11-05
差别不是很大,不填存储时占很小很小的空白字节,而empty string存储为0个字节,应该是。
第3个回答  2013-12-03
mysql学的不精,但null很明显不等于空值。。。null是一个未确定的值,或者说你绝不可能使用一个变量来等于null
第4个回答  2014-01-02
首先,要区分开
null=空;
empty string=空字符串。可以了解为零字节长度的字符串。
另外,要注意一点,就是sql查询的时候要是空的字符串会查询出为空,要是null的话,会提示sql语句有错。

那这样的话,好像是数据库校对字符集的问题。。。
相似回答