目录
- 1. 空值 `Null` 和空字符 `''`
- 2. 空值 `Null` 和空字符 `''` 在查询方式上的对比
- 2.1. 创建 `SQL` 脚本
- 2.2. 查询 `username` 列为空字符串 `''` 的所有数据
- 2.3. 查询 `username` 列为空值 `null` 的所有数据
- 2.3.1. 错误 `SQL`
- 2.3.2. 正确 `SQL`
- 2.4. 查询 `username` 列不为空值 `null` 的所有数据
- 2.4.1. 错误 `SQL`
- 2.4.2. 正确 `SQL`
- 3. 空值 `Null` 和空字符 `''` 在 `count()` 函数查询的对比
- 3.1. 查询 `username` 列数据总数
- 4. `MySQL` 中的比较运算符
1. 空值 Null 和空字符 ''
日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到 MySQL 中的 NULL 和空字符 '',二者表面上看都是空,其实存在一些差异的
- 空值
NULL的长度是NULL,不确定占用了多少存储空间,它是占用存储空间的 - 空字符串
''的长度是0,是不占用空间的
通俗的讲:空字符串 '' 就像是一个真空状态的杯子,什么都没有;而空值 NULL 就像是一个装满空气的杯子,是有东西的。二者虽然看起来都是空的、透明的,但是有着本质的区别
2. 空值 Null 和空字符 '' 在查询方式上的对比
2.1. 创建 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 值与 '' 值

2.2. 查询 username 列为空字符串 '' 的所有数据

2.3. 查询 username 列为空值 null 的所有数据
2.3.1. 错误 SQL

2.3.2. 正确 SQL

2.4. 查询 username 列不为空值 null 的所有数据
2.4.1. 错误 SQL

2.4.2. 正确 SQL

- 比较字符
=,>,< ,<>,!=都不能用于查询比较null值,如果需要查询空值null,必须使用is null或is not null - 空值
''可以使用=, !=, <, >等算术运算符来查询的
3. 空值 Null 和空字符 '' 在 count() 函数查询的对比
3.1. 查询 username 列数据总数

- 使用
count()的时候,空值null并不会被当成有效值去统计的 - 空字符串
''是会被count()函数所统计的
4. MySQL 中的比较运算符
| 运算符 | 含义 |
|---|---|
= | 等于 |
<=> | 安全等于,可以比较 null |
<> 或 != | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
> | 大于 |
< | 小于 |
IS NULL | 判断一个值是否为 null |
IS NOT NULL | 判断一个值是否不为 null |
















