字段value2的属性不是NOT NULL
表里保存的数据如下:
例子2:
执行 *** 作:SELECT CONCAT('T','E',1,'test')
结果如下:
执行 *** 作:SELECT CONCAT('T','E',null,'test')
例子3:
执行 *** 作:SELECT COUNT(value2) FROM test
1、空值是不占用空间的
2、mysql中的NULL其实是占用空间的,下面是来自于MYSQL官方的解释:
“NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.”
NULL列需要在行中额外的空间来记录它们的值是否为NULL。对于MyISAM表,每个空列都多取一位,四舍五入到最近的字节。
打个比方来说,你有一个杯子,空值代表杯子是真空的,NULL代表杯子中装满了空气,虽然杯子看起来都是空的,但是区别是很大的。
因为NULL 其实并不是空值,而是要占用空间,所以mysql在进行比较的时候,NULL 会参与字段比较,所以对效率有一部分影响。(待认证)
notnull
表示这个字段不能为空
虽然看起来他是人为设置的
但是他和业务逻辑或者数据结构有关系
比如你要对这条记录进行读取
而这个是很重要的属性
那么你不仅要让其不为空
还要让他是指定的格式或者数值
还有情况就是
这个字段恰是其他表的主键
那么只有他有值才能正确关联两张表
所以他必须有值
可以。MySQL 非空约束(NOT NULL)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。
比如,在用户信息表中,如果不添加用户名,那么这条用户信息就是无效的,这时就可以为用户名字段设置非空约束。
在创建表时设置非空约束
创建表时可以使用 NOT NULL 关键字设置非空约束,具体的语法格式如下:
<字段名><数据类型>NOT NULL
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)