MySQL中空值Null和空字符‘‘的具体使用

 更新时间:2022年05月25日 15:02:25   作者:桐花思雨  
本文主要介绍了MySQL中空值Null和空字符''的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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和空字符‘‘内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 优化mysql的limit offset的例子

    优化mysql的limit offset的例子

    在mysql中,通常使用limit做分页,而且经常会跟order by 连用。在order by 上加索引有时候是很有帮助的,不然系统会做很多的filesort
    2013-02-02
  • MySQL 查询速度慢与性能差的原因与解决方法

    MySQL 查询速度慢与性能差的原因与解决方法

    随着网站数据量与访问量的增加,MySQL 查询速度慢与性能差的问题就日渐明显,这里为大家分享一下解决方法,需要的朋友可以参考下
    2019-09-09
  • mysql在update,非主键索引更新引起死锁问题

    mysql在update,非主键索引更新引起死锁问题

    这篇文章主要介绍了mysql在update,非主键索引更新引起死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • mysql缓冲和缓存设置详解

    mysql缓冲和缓存设置详解

    本文主要给大家讲解的是mysql优化过程中比较重要的2个参数缓冲和缓存的设置,希望大家能够喜欢
    2016-12-12
  • MySQL获得当前日期时间函数示例详解

    MySQL获得当前日期时间函数示例详解

    这篇文章主要给大家介绍了关于MySQL获得当前日期时间函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 简单解决Windows中MySQL的中文乱码与服务启动问题

    简单解决Windows中MySQL的中文乱码与服务启动问题

    这篇文章主要介绍了Windows中MySQL的中文乱码与服务启动问题,如果程序没有特殊需要则建议MySQL尽量默认设为UTF-8格式编码,需要的朋友可以参考下
    2016-03-03
  • Mysql字段为null的加减乘除运算方式

    Mysql字段为null的加减乘除运算方式

    这篇文章主要介绍了Mysql字段为null的加减乘除运算方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 安装MySQL后include目录下没有找到libmysql.lib

    安装MySQL后include目录下没有找到libmysql.lib

    安装了MySQL后,在其安装目录下的include文件夹并没有找到libmysql.lib,主要原因是在安装MySQL的时候,没有勾选develop component这一选项造成的
    2014-08-08
  • MySQL数据库 1067错误号的解决方法

    MySQL数据库 1067错误号的解决方法

    这篇文章主要介绍了MySQL数据库 1067错误号的解决方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • MySQL binlog 远程备份方法详解

    MySQL binlog 远程备份方法详解

    以前备份binlog时,都是先在本地进行备份压缩,然后发送到远程服务器中,但是这种备份方式非常的不安全,下面通过本文给大家介绍MySQL binlog 远程备份的方法,需要的朋友一起学习吧
    2016-05-05

最新评论