mysql的null值跟空值(你知道mysql中空值和null值的区别吗)
mysql的null值跟空值
你知道mysql中空值和null值的区别吗前言
最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值。以下带来示例给大家进行讲解。
建表
|
create table test (cola varchar (10) not null ,colb varchar (10) null ); |
向test表中插入数据
插入cola为null的数据
|
insert into test values ( null ,1); |
此时会报错,因为cola列不能为null。
插入colb为null的数据
|
insert into test values (1, null ); |
发现插入成功。
插入都为空的数据
|
insert into test values ( '' , '' ); |
插入cola为空的数据
|
insert into test values ( '' , null ); |
发现向cola一列插入空值成功,而colb列既可以插入空值,也可以插入null值。
总结一下,定义为not null的字段只能插入空值,不能插入null值,而null字段可以插入空值,也可以插入null值。
插入都不为空的数据
|
insert into test values (1,2); |
开始查询
可以发现 is not null 只会过滤为null值的列,而<>会同时过滤空值和null值,所以要根据实际情况选择过滤方式。
另外,判断null值只能用 is null 或 is not null ,不能用 = 或 <>。
特别注意
1、在进行count()统计某列的记录数的时候,如果采用的null值,会别系统自动忽略掉,但是空值是会进行统计到其中的。
2、判断null 用is null 或者 is not null,sql 语句函数中可以使用ifnull()函数来进行处理,判断空字符用 = 或者 <> 来进行处理
3、对于mysql特殊的注意事项,对于timestamp数据类型,如果往这个数据类型插入的列插入null值,则出现的值是当前系统时间。插入空值,则会出现 ‘0000-00-00 00:00:00'
4、对于空值的判断到底是使用is null 还是 = 要根据实际业务来进行区分。
5、当使用order by时,首先呈现null值。如果你用desc以降序排序,null值最后显示。当使用group by时,所有的null值被认为是相等的,故只显示一行。
总结
到此这篇关于mysql中空值和null值的区别的文章就介绍到这了,更多相关mysql空值和null值的区别内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
原文链接:https://www.cnblogs.com/jichi/p/14279875.html
- docker安装mysql后无法连接(Docker 安装 MySQL 并实现远程连接教程)
- mysql主从模式与读写分离(磁盘写满导致MySQL复制失败的解决方案)
- mysqlorder工作原理(详解Mysql order by与limit混用陷阱)
- mysql完整教程(MySql新手入门的基本操作汇总)
- mysql 慢查询排查方法(MYSQL慢查询和日志实例讲解)
- mysql有哪些约束(MySQL完整性约束的定义与实例教程)
- centos7怎么安装mysql(Centos7 mysql数据库安装及配置实现教程)
- mysql的三种模式(详解 MySQL的FreeList机制)
- MySql中date、datetime、time类型的区别
- mysqldump备份缺点(MySQL5.7 mysqldump备份与恢复的实现)
- linux系统登录mysql数据库(Linux手动部署远程的mysql数据库的方法详解)
- php redis应用场景(PHP商品秒杀问题解决方案实例详解mysql与redis)
- mysql哪些配置影响性能
- mysql8.0.21的安装步骤(mysql8.0.23 msi安装超详细教程)
- mysql索引失效的几种情况(Mysql 5.6 "隐式转换"导致的索引失效和数据不准确的问题)
- oracle如何用脚本文件创建表空间(MySQL版oracle下scott用户建表语句实例)
- 梁山创始人杜迁,为何不受宋江待见,只排名83位(梁山创始人杜迁)
- 法国面包(法国面包法棍)
- 微信(微信分身)
- 双十二(双十二和双十一哪个划算)
- 佛肚竹盆景的养护之道(佛肚竹盆景的养护之道)
- 包水饺(包水饺手法怎么包视频)
热门推荐
- jq控制css样式(css3模拟jq点击事件的实例代码)
- linuxudp通信程序(linux对于UDP的学习)
- php简单定时执行任务(php实现 master-worker 守护多进程模式的实例代码)
- mysql查看视图注释(详解MySQL的sql_mode查询与设置)
- tomcat服务出现乱码(解决Tomcat10 Catalina log乱码问题)
- php框架创建控制器代码(php连接sftp的作用以及实例代码)
- mysql实现mvc(mysql的MVCC多版本并发控制的实现)
- linq distinct去重
- python入门知识点总结(深入解析Python小白学习操作列表)
- tp5微信支付接口开发案例(PHP实现的微信APP支付功能示例基于TP5框架)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9