MySQL:简述MySQL中的Null约束和Not Null约束

MySQL:简述MySQL中的Null约束和Not Null约束


    在MySQL中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束。下面我们简单说下Null和Not Null这两个约束。

    在每个字段后面可以加上 NULL 修饰符来指定该字段是否可以为空;或者加上 NOT NULL 修饰符来指定该字段必须填上数据。

    MySQL默认情况下指定字段为NULL修饰符,如果一个字段指定为NOT NULL,MySQL则不允许向该字段插入NULL,但是可以插入’’。’'之间没有空格,表示长度为0的字符或字符串。

注意

1 . 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.”
翻译过来就是:空列需要行中的额外空间来记录其值是否为空。对于MyISAM表,每一个空列都额外增加一位,四舍五入到最接近的字节。

2 . 在进行count()统计某列的记录数的时候,如果采用的NULL值,系统会自动忽略掉,但是空值 ‘’ 是会进行统计到其中的。

3 . 判断NULL 用IS NULL 或者 IS NOT NULL, SQL语句函数中可以使用ifnull()函数来进行处理,判断空字符用=’‘或者 <>’'来进行处理。

4 . 对于timestamp数据类型,如果往这个数据类型插入的列插入NULL值,则出现的值是当前系统时间;插入空值,则会出现 0000-00-00 00:00:00。

5 . 对于空值的判断到底是使用is null 还是=’’ 要根据实际业务来进行区分。


实现样例

drop table if exists table_null;
create table table_null
(
   message_pk          bigint not null auto_increment,

   message_content1     varchar(99) NULL,  
   message_content2     varchar(99) NOT NULL,  

   primary key (message_pk)
);

/* 报错:Column 'message_content2' cannot be null */
insert into table_null(message_content1,message_content2) values(null,null);
/* 报错:Column 'message_content2' cannot be null */
insert into table_null(message_content1,message_content2) values('',null);
/* 报错:Column 'message_content2' cannot be null */
insert into table_null(message_content1,message_content2) values('message_content1',null);

insert into table_null(message_content1,message_content2) values(null,'');
insert into table_null(message_content1,message_content2) values('','message_content2');
insert into table_null(message_content1,message_content2) values('message_content1','message_content2');

select * from table_null where message_content1 <> '';
select * from table_null where message_content1 is not null;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页