Null
和空字符 ''
日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到 MySQL
中的 NULL
和空字符 ''
,二者表面上看都是空,其实存在一些差异的
NULL
的长度是 NULL
,不确定占用了多少存储空间,它是占用存储空间的''
的长度是 0
,是不占用空间的*通俗的讲:空字符串 ''
就像是一个真空状态的杯子,什么都没有;而空值 NULL
就像是一个装满空气的杯子,是有东西的。二者虽然看起来都是空的、透明的,但是有着本质的区别
Null
和空字符 ''
在查询方式上的对比SQL
脚本CREATE TABLE `test_1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
--插入数据
INSERT INTO test_1 VALUES(1,'李斯','111111');
INSERT INTO test_1 VALUES(2,'','');
INSERT INTO test_1 VALUES(3,null,'');
INSERT INTO test_1 VALUES(4,null,1);
表中的数据如下,注意 null
值与 ''
值
username
列为空字符串 ''
的所有数据username
列为空值 null
的所有数据SQL
SQL
username
列不为空值 null
的所有数据SQL
SQL
=,>,< ,<>
,!=
都不能用于查询比较 null
值,如果需要查询空值 null
,必须使用 is null
或 is not null
''
可以使用 =, !=, <, >
等算术运算符来查询的Null
和空字符 ''
在 count()
函数查询的对比username
列数据总数count()
的时候,空值 null
并不会被当成有效值去统计的''
是会被 count()
函数所统计的MySQL
中的比较运算符运算符 | 含义 |
---|---|
= | 等于 |
<=> | 安全等于,可以比较 null |
<> 或 != | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
> | 大于 |
< | 小于 |
IS NULL | 判断一个值是否为 null |
IS NOT NULL | 判断一个值是否不为 null |