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 nullis not null
  • 空值 '' 可以使用 =, !=, <, > 等算术运算符来查询的

3. 空值 null 和空字符 ” 在 count() 函数查询的对比

3.1. 查询 username 列数据总数

使用 count() 的时候,空值 null 并不会被当成有效值去统计的

空字符串 '' 是会被 count() 函数所统计的

4. mysql 中的比较运算符

运算符 含义
= 等于
<=> 安全等于,可以比较 null
<> 或 != 不等于
>= 大于等于
<= 小于等于
> 大于
< 小于
is null 判断一个值是否为 null
is not null 判断一个值是否不为 null

到此这篇关于mysql中空值null和空字符‘‘的具体使用的文章就介绍到这了,更多相关mysql 空值null和空字符‘‘内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!