MySQL关于NULL值,常见的几个坑

news2024/12/19 19:44:09

数据库版本MySQL8。

1.count 函数 觉得 NULL值 不算数 ,所以开发中要避免count的时候丢失数据。

如图所示,以下有7条记录,但是count(name)却只有6条。 

为什么丢失数据?因为MySQL的count函数觉得 Null值不算数,就是说Mysql不把NULL数据当成一个数。

 2.distinct 数据丢失

当使用 count(distict col1,col2)查询时,如果其中一个列为Null,那么即使另一个列有不同的值,那么查询的结果也会将数据丢失,如下SQL所示:

select count (distinct name,mobile) from person;

 3.select 数据丢失。

如果某列存在NULL值,如果执行不等于查询(<> or != )会导致为NULL值的结果丢失。比如以下这个数据:

元数据
原数据

select * from person where name != 'Java' order by id;

按理说NULL 也不等于Java对吧,按理要能查出来,结果查不出来。

NULL值数据丢失

4.导致空指针异常。

如果某列存在NULL值,可能会导致sum(column)的返回结果为NULL而非0,如果sum查询的结果为NULL,就可能会导致程序执行时空指针异常NullPointerException。

sum(num)是null

可以使用 ifnull函数来避免空指针异常。

select ifnull(sum(num),0) from goods where id >4;

 5.增加了查询难度。

当某列值中有NULL值的时候,在进行NULL值或者非NULL值得查询难度就增加了。所谓得查询难度增加指的是当进行NULL值查询时,必须使用NULL值匹配的查询方法,比如 IS NULL 或者 IS NOT NULL ,又或者是 IFNULL(column) 这样的表达式进行查询,而非传统的 =,!= ,<>...等这些表达式就不能使用了,这就增加了查询的难度,尤其对新手来说。

select * from person where name != null; 

不能用不等于,而应该用is not null.

扩展总结:列中有NULL 不会影响索引,但是不建议列中有NULL,给与一个默认值,比如一个空字符串或者0等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/371611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shader(着色)

1.深度测试&#xff08;Z-Buffer &#xff09;每个像素需要一个深度来排序是否需要渲染&#xff0c;所以需要额外的buffer来存储&#xff0c;frame buffer 存颜色&#xff0c;depth buffer (z-buffer) 存深度。2.Lambert(漫反射)3.Blinn-Phong &#xff08;高光&#xff09;4.环…

Netty权威指南总结(一)

一、为什么选择Netty&#xff1a;API使用简单&#xff0c;开发门槛低&#xff0c;屏蔽了NIO通信的底层细节。功能强大&#xff0c;预制了很多种编解码功能&#xff0c;支持主流协议。定制能力强&#xff0c;可以通过ChannelHandler对通信框架进行灵活地拓展。性能高、成熟、稳定…

一文搞定Android Vsync原理简析

屏幕渲染原理"现代计算机之父"冯诺依曼提出了计算机的体系结构: 计算机由运算器&#xff0c;存储器&#xff0c;控制器&#xff0c;输入设备和输出设备构成&#xff0c;每部分各司其职&#xff0c;它们之间通过控制信号进行交互。计算机发展到现在&#xff0c;已经出…

【Python知识点桂电版】01基本数据类型

一、变量变量定义注&#xff1a;查看变量类型->type(变量)查看变量地址->id(变量)变量命名规则只允许出现&#xff1a;英文、中文、数字、下划线&#xff08;不推荐用中文&#xff0c;不能以数字开头&#xff09;大小写敏感不可使用关键字&#xff08;如and&#xff09;和…

代码随想录【Day24】| 开始回溯!77. 组合

回溯的本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出我们想要的答案&#xff0c;如果想让回溯法高效一些&#xff0c;可以加一些剪枝的操作&#xff0c;但也改不了回溯法就是穷举的本质。 那么既然回溯法并不高效为什么还要用它呢&#xff1f; 因为没得选&#xf…

cesium: 设置skybox透明并添加背景图 ( 003 )

第003个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置skybox透明并添加背景图。 我们不想要黑乎乎的背景,想自定义一个背景图,然后前面显示地球。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共70…

奇妙的background-clip:text

我们在学习CSS3时&#xff0c;一个背景属性background-clip用来对背景进行裁剪&#xff0c;即指定背景绘制的区域&#xff0c;通常我们使用的几个属性如下&#xff1a;值说明border-box默认值。背景绘制在边框方框内&#xff08;剪切成边框方框&#xff09;。padding-box背景绘…

【C++入门(上篇)】C++入门学习

前言&#xff1a; 在之前的学习中&#xff0c;我们已经对初阶数据结构进行相应了学习&#xff0c;加上之前C语言的学习功底。今天&#xff0c;我们将会踏上更高一级“台阶”的学习-----即C的学习&#xff01;&#xff01;&#xff01; 文章目录1.C 简介1.1什么是C1.2.C的发展史…

【数据库】join SQL语句原理优化

背景 在实际的开发中&#xff0c;业务相关表都是通过uid或者一个可以标记业务领域的一个属性转换成的字段进行关联的&#xff0c;但是对于一些后续的业务&#xff0c;比如数据分析、下游系统使用、金融对账等业务&#xff0c;需要进行多表联查&#xff0c;之前实际生产的时候就…

【安卓开发】内容提供器

内容提供器实现了不同程序之间实现数据共享的功能。 7.2 运行时权限 安卓6.0版本后引入了运行时权限 每个权限都属于一个组&#xff0c;授权了其中一个&#xff0c;一个组内的权限都将会被授权。 测试代码 // AndroidManifest.xml中加入以下代码 <uses-permission andr…

魔改hustoj源码使其支持显示队名和队员及女队标志

0. 起因&需求 本文涉及到的开源项目Github地址&#xff1a;https://github.com/zhblue/hustoj 事件的起因是&#xff0c;计算机学院要举办一个院级的ACM比赛&#xff0c;然后捏… 老师给我提了一个需求&#xff0c;就是能不能把比赛排行榜显示的队名下标注对应的队员&…

光栅化Triangles(笔记)

field of view (可见区域) 该角度越大,需要透视投影的角度越大,成像显示的内容越多 有Y值,则可得出成像范围 屏幕: 典型的光栅处理设备所有像素都被表示为x,y坐标轴形式 3D方块成像步骤: 先将其所在平面化为 与屏幕等长等宽的形式: 如何将一个三角形拆成像素&#xff1f;采样…

C++学习笔记-2

C学习笔记-2输入/输出控制----I/O流命名空间的定义及使用string类型函数改进域解析符::扩大全局变量的作用域形式参数可带有默认值函数重载引用的定义与应用引用的概念及使用引用作为形式参数引用与指针的比较引用作为返回值动态内存空间用new申请动态内存空间用delete释放动态…

unicloud的aggregate聚合查询时间戳转日期

我特么不知道看了这个帖子几百遍才看明白到-----》unicloud数据库中&#xff0c;聚合操作如何操作时间戳&#xff1f; - DCloud问答 自己淋过雨老想着为别人撑伞&#xff0c;可怜我这35岁的老人家&#xff0c;给我去点关注&#xff01;&#xff01;&#xff01;&#xff01;&a…

centos上cliskhouse的安装记录

clickhouse是由俄罗斯Yandex公司开发的列式存储数据库&#xff0c;于2016年开源&#xff0c;clickhouse的定位是快速的数据分析&#xff0c;对于处理海量数据的情况性能非常好&#xff0c;在网上也有很多测试的案例&#xff0c;在大数据的情况下性能远超过其他数据库&#xff0…

ThreadLocal原理、结构、源码解析

文章目录一、Thread简介1.什么是ThreadLocal2.为什么要是用ThreadLocal2.1Synchronized、Lock保证线程安全2.2ThreadLocal保证线程安全3.ThreadLocal和Synchronized的区别二、ThreadLocal原理1.Thread抽象内部结构2.ThreadLocal源码2.1Thread、ThreadLocal、ThreadLocalMap、En…

行业观察 | 内存接口芯片和CXL协议

本文对内存接口芯片的概念和CXL协议进行不完全总结。 更新&#xff1a;2022 / 02 / 25 行业观察 | 内存接口芯片背景内存接口芯片概念趋势CXL 协议背景 DRAM 内存基本被国外巨头 三星、美光 等内存模组制造商垄断&#xff0c;合计市场占有率超过 90%。 内存接口芯片 概念 什…

【Android】Android开发笔记(一)

【Android】Android开发笔记&#xff08;一&#xff09; 在Android Studio中import module和delete moduleimport moduledelete moduleAndroid Studio中App&#xff08;Module&#xff09;无法正常运行在实机上测试App一些基本概念App的工程结构结语在Android Studio中import m…

Leetcode Solutions - Part 2

1. Two Sum 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按…

7-vue-1

谈谈你对MVVM的理解 为什么要有这些模式&#xff0c;目的&#xff1a;职责划分、分层&#xff08;将Model层、View层进行分类&#xff09;借鉴后端思想&#xff0c;对于前端而已&#xff0c;就是如何将数据同步到页面上 MVC模式 代表&#xff1a;Backbone underscore jquer…