服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL系列关于NUll值的经验总结分析教程

MySQL系列关于NUll值的经验总结分析教程

2021-11-26 16:55数据分析与统计学之美 Mysql

这篇文章主要为大家介绍了MySQL系列关于NUll值的一些经验总结分析,关于null值的影响作用以及为什么会出现null值的原因等等问题的解析

1.测试数据

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
create table test_null (
    id int,
    name varchar(20),
    chinese int,
    math int,
    english int
) charset=utf8;
 
insert into test_null
values
(1,null,80,70,68),
(2,'张三',60,null,null),
(3,'李四',null,90,80),
(4,'王五',90,60,75),
(5,null,null,50,95);

结果如下:

MySQL系列关于NUll值的经验总结分析教程

2.null值带给我们的不便影响

1)过滤有所不同,只能使用is null或者is not null;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# null值不能使用 == 或 != 来比较
# 下面两种用法都是错误的
select *
from test_null
where name == null;
 
select *
from test_null
where name != null;
 
# null值一般使用 is null is not null 来比较
# 下面两种用法才是正确的
select *
from test_null
where name is null;
 
select *
from test_null
where name is not null;

2)出现null值,会导致+ - * /运算失效;

?
1
2
3
select
    *,(chinese+math+english) as 总分
from test_null;

结果如下:

MySQL系列关于NUll值的经验总结分析教程

3)null值对聚合函数无影响,聚合函数会直接忽略null值;

?
1
2
3
4
5
select
    sum(chinese) 语文总分,
    sum(math) 数学总分,
    sum(english) 外语总分
from test_null

结果如下:

MySQL系列关于NUll值的经验总结分析教程

3.空格、空值和null,我们应该怎么判断呢?

1)空格、空值和null的区别

用一个形象的比喻来说明这三者的区别。首先空格很好理解,一个空字符串吗,占据一定的空间大小。不好理解的其实是空值和null,空值相当于一个杯子是真空状态的,什么也没有,null表示的杯子中有空气。

mysql中,null是未知的,且占用空间的。null使得索引、索引统计和值都更加复杂,并且影响优化器的判断。空值('')是不占用空间的,注意空值的''之间是没有空格的。在进行count()统计某一列记录数的时候,如果存在null值,会被系统自动忽略掉,但是空值会被统计到其中。判断null使用的是is nullis not null,但判断空字符使用的是= ,!=, <>来进行处理。对于timestamp数据类型,如果插入null值,则出现的值是当前系统时间。插入空值,则会出现0000-00-00 00:00:00。对于已经创建好的表,普通的列将null修改为not null带来的性能提升较小,所以调优时候没有比要注意。

2)出现了null值,我应该怎么办?

通过上面的分析我们已经知道了,当表中存在null值,会导致加、减、乘、除运算失效。那么我们怎么处理这些null值比较好呢?

第一种方式:直接使用is not null将这些null值过滤掉,但是这样会将其它非缺失值的字段过滤掉,造成数据的浪费。

第二种方式:也是我们推荐的方式,我们使用函数进行缺失值的填充。

ifnull()和coalesce()函数的使用:

?
1
2
3
4
5
6
7
select
        id,
        coalesce(name,'无名氏') name,
        coalesce(chinese,0) chinese,
        ifnull(math,0) math,
        ifnull(english,0) english
from test_null;

结果如下:

MySQL系列关于NUll值的经验总结分析教程

以上就是mysql系列关于null值的经验总结分析的详细内容,更多关于mysql中的null值的资料请关注服务器之家其它相关文章!

原文链接:https://huang-tong-xue.blog.csdn.net/article/details/106851833

延伸 · 阅读

精彩推荐
  • MysqlWindows安装MySQL 5.7.18 解压版的教程

    Windows安装MySQL 5.7.18 解压版的教程

    这篇文章主要为大家详细介绍了Windows安装MySQL 5.7.18 解压版的详细教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...

    Spade-A3552020-08-04
  • Mysql浅谈mysql explain中key_len的计算方法

    浅谈mysql explain中key_len的计算方法

    下面小编就为大家带来一篇浅谈mysql explain中key_len的计算方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    MYSQL教程网3802020-07-24
  • MysqlMysql更换MyISAM存储引擎为Innodb的操作记录总结

    Mysql更换MyISAM存储引擎为Innodb的操作记录总结

    下面小编就为大家带来一篇Mysql更换MyISAM存储引擎为Innodb的操作记录总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来...

    MYSQL教程网5192020-07-22
  • Mysql详解MySQL主从复制实战 - 基于日志点的复制

    详解MySQL主从复制实战 - 基于日志点的复制

    这篇文章主要介绍了详解MySQL主从复制实战 - 基于日志点的复制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。...

    Payon3632020-07-20
  • Mysql介绍备份和还原MySQL数据的两种方法

    介绍备份和还原MySQL数据的两种方法

    这篇文章主要介绍了介绍备份和还原MySQL数据的两种方法,文中的操作环境基于CentOS,介绍了使用mysqldump和数据库文件两种方法,需要的朋友可以参考下 ...

    goldensun2252020-04-13
  • Mysql如何修改WAMP中mysql默认空密码的方法

    如何修改WAMP中mysql默认空密码的方法

    WAMP安装好后,mysql密码是为空的,那么要如何修改呢?其实很简单,通过几条指令就行了,下面我就一步步来操作。 ...

    MYSQL教程网5752019-11-21
  • Mysql很全面的MySQL处理重复数据代码

    很全面的MySQL处理重复数据代码

    这篇文章主要为大家详细介绍了MySQL处理重复数据的实现代码,如何防止数据表出现重复数据及如何删除数据表中的重复数据,感兴趣的小伙伴们可以参考...

    码农教程1582020-06-08
  • Mysqlmysql高效查询left join和group by(加索引)

    mysql高效查询left join和group by(加索引)

    这篇文章主要给大家介绍了关于mysql高效查询left join和group by,这个的前提是加了索引,以及如何在MySQL高效的join3个表 的相关资料,需要的朋友可以参考下...

    ZhangJQKb7672021-08-16