当前位置: 首页 > news >正文

MySQL中关于NULL值的六大坑!你被坑过吗?

NULL值是我们在开发过程中的老朋友了,但是这个老朋友在MySQL中有很多坑,我通过这篇文章来总结分享一下,欢迎大家在评论区分享你的看法和踩坑经历。

1、NULL不等于NULL

在MySQL中,执行以下SQL会返回NULL

假如t表有以下数据,其中有一条a为null的记录

如果执行以下SQL将会返回空集合,明明有a为null的记录,但却没查到,好坑!

假如我们认为NULL等于NULL,那么这就会导致误解,从而导致业务逻辑出现问题。

大家觉得:NULL应不应该等于NULL呢?

事实上,我们得通过is null来判断某个值是不是null,可为啥要这么设计呢?

2、NULL与任何值比较都为NULL

实际上,NULL与任何值比较都为NULL

这里的重点是,并不是返回的0,而是null,既然不相等,为什么不返回0呢?不是1代表相等,0代表不相等吗?好坑!

3、NULL导致唯一索引不唯一

我们给a、b两个字段创建唯一联合索引

alter table t add unique idx_ab(a,b);

由于是唯一索引,所以第二次插入(1,1)时会报错

insert into t(a,b) values(1,1);
insert into t(a,b) values(1,1);

但如果是插入(2,null)则不会报错

insert into t(a,b) values(2,null);
insert into t(a,b) values(2,null);

最终表中的结果为

不是说ab是唯一索引吗,怎么还能有重复记录?好坑!

4、NULL对排序的影响

当前表的数据为

我们对a字段先进行升序排序

嗯…NULL排在了最前面,两个NULL也按id进行了升序排序,这倒是能理解,那反过来进行降序排序呢

嗯…NULL排在了最后面,这倒没问题,可是两个NULL的记录能不能也按id进行降序排序呢?你觉得是坑吗?

5、聚合函数不会统计NULL值

对于上表,总共有8条记录,其中a为null的有两条,执行count语句,以下结果大家应该能理解,count(a)时不会统计a为null的记录。

但是如果对a字段执行求平均数,那么结果为4.1667

计算方法为8+6+5+3+2+1=25,然后25/6=4.1667,关键是,到底应该是25/6还是25/8呢?你们觉得呢?

6、NULL导致函数结果为NULL

有时,我们可能会在SQL进行字符串连接,比如执行

为什么要返回null呢?返回’daduduzhouyu’应该更好吧?

欢迎大家在评论区聊聊你对这六大坑的看法,或者自己的踩坑经历,谢谢大家的阅读,记得点赞、关注哦。

我的所有文章汇总在了我的公众号:IT周瑜,欢迎大家关注,同时公众号内还有我整理的100道面试真题,有需要的兄弟关注后即可领取。

相关文章:

MySQL中关于NULL值的六大坑!你被坑过吗?

NULL值是我们在开发过程中的老朋友了,但是这个老朋友在MySQL中有很多坑,我通过这篇文章来总结分享一下,欢迎大家在评论区分享你的看法和踩坑经历。 1、NULL不等于NULL 在MySQL中,执行以下SQL会返回NULL 假如t表有以下数据&#…...

学生学习动机测试:激发潜能,引领未来

学习动机、学习兴趣和学习目标制定是影响学生学习成效的三个关键因素。通过对学生学习动机的测试,我们可以深入了解学生的学习状态,进而采取针对性的措施,激发他们的学习潜能,引导他们走向更加光明的未来。本文将从学习动机、学习兴趣和学习目标制定三个方面,详细探讨学生…...

基于SSM党务政务服务热线管理系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,部门管理,办事信息管理,信息记录管理,系统管理 前台账号功能包括:系统首页,个人中心,部门,信息…...

OSI参考模型详解:初学者指南与实践案例

OSI参考模型详解:初学者指南与实践案例 OSI(Open System Interconnect)参考模型是一个由国际标准化组织(ISO)提出的七层网络分层模型,它为全球所有互联计算机系统提供了一个通用的通信框架,解决…...

S7-200 SMART 与 S7-1200 之间 TCP 通信— S7-200 SMART 作为服务器

TCP 协议通信 TCP 通信为面向连接的通信,需要双方都调用指令以建立连接及交换数据。S7-200 SMART 与 S7-1200 通过 TCP 通信,在 S7-1200 调用 T-block 指令 ( TCON, TDISCON, TSEND, TRCV ) ,在 S7-200 SMART 调用 Open User Communication …...

Java @RequestPart注解:同时实现文件上传与JSON对象传参

RequestPart注解:用于处理multipart/form-data请求的一部分,通常用于文件上传或者处理表单中的字段。 java后端举例: PostMapping("/fileTest")public AjaxResult fileTest(RequestPart("file") MultipartFile file,Req…...

深度学习基础知识-02 数据预处理

深度学习的数据预处理通常包括: 1.数据清洗:去除错误或不完整的数据。 2.归一化:调整数据范围,如将像素值缩放到0-1。 3.数据增强:通过旋转、缩放等方法增加数据多样性。 4.数据划分:将数据分为训练集、验证…...

【CTF刷题9】2024.10.19

[MoeCTF 2021]babyRCE 考点&#xff1a;关键词过滤&#xff08;绕过方法参考往期博客&#xff09; 来源&#xff1a;nssctf <?php$rce $_GET[rce]; if (isset($rce)) {if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\|\%|\&g…...

WPF中的Setter

在 WPF (Windows Presentation Foundation) 中&#xff0c;Setter 是一个定义控件属性值的标记&#xff0c;通常用在 Style 或 Template 中。Setter 用于指定当某些条件满足时&#xff0c;控件的属性应该如何设置。以下是 Setter 的一些关键点&#xff1a; 属性设置&#xff1a…...

RabbitMQ下载与配置

安装Erlang Erlang 下载地址如下&#xff1a; https://erlang.org/download/otp_versions_tree.html 安装 RabbitMQ RabbitMQ 下载地址如下&#xff1a; https://www.rabbitmq.com/install-windows.html 查看服务&#xff0c;服务已经正常启动 打开Command Prompt 输入rabb…...

【数据结构与算法】力扣 54. 螺旋矩阵

问题描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a; matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a; [1,2,3,6,9,8,7,4,5]示例 2&#xff1a; 输入&#xff1a; ma…...

速通不了的人工智能

下面是一个详细且系统的人工智能学习框架,涵盖了从基础理论到实际应用的各个方面。这个框架包括理论学习、编程实践、项目实战和资源推荐。为了帮助你更好地理解和应用,我会提供一些具体的代码示例。 人工智能学习框架 1. 基础理论 1.1 数学基础 线性代数:向量、矩阵、特…...

微信新功能上线,找工作也能“附近”搞定

大家好&#xff0c;我是小悟 你们听说了吗&#xff1f;微信又双叒叕出新功能啦&#xff01;这次可不是什么微整形、小游戏之类的小打小闹&#xff0c;而是实实在在的大招——查找附近的工作&#xff01;没错&#xff0c;你没听错&#xff0c;就是那个在你家门口就能找到工作的…...

CANoe与C#联合仿真方案

引言 CANoe作为一款强大的网络仿真工具,能够模拟各种通信协议,尤其是在汽车领域的CAN、LIN、Ethernet等协议。而C#作为一种广泛使用的编程语言,能够为CANoe提供灵活的用户界面和逻辑控制。本文将探讨如何将CANoe与C#结合,实现高效的联合仿真方案。 1. 系统架构 联合仿真…...

公交信息在线查询系统|基于java和小程序的公交信息在线查询系统小程序设计与实现(源码+数据库+文档)

公交信息在线查询系统小程序 目录 基于java和小程序的公交信息在线查询系统小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂…...

[LeetCode] 1162. 地图分析

题目描述&#xff1a; 你现在手里有一份大小为 n x n 的 网格 grid&#xff0c;上面的每个 单元格 都用 0 和 1 标记好了。其中 0 代表海洋&#xff0c;1 代表陆地。 请你找出一个海洋单元格&#xff0c;这个海洋单元格到离它最近的陆地单元格的距离是最大的&#xff0c;并返…...

CentOS 上安装 MySQL(附卸载教程)

在 CentOS 上安装 MySQL 5.7&#xff1a; 1. 添加 MySQL Yum 存储库 首先&#xff0c;确保你已添加 MySQL Yum 存储库。因为你已经安装了 mysql57-community-release-el7-11.noarch&#xff0c;如果需要重新添加&#xff0c;可以使用以下命令&#xff1a; sudo yum localins…...

如何在Matlab界面中添加日期选择器?

在Matlab界面中添加日期选择器&#xff0c;可以让用户通过图形界面方便地选择日期。Matlab提供了uidatepicker函数&#xff0c;允许用户在App Designer设计的GUI中添加日期选择器组件。以下是如何在Matlab界面中添加日期选择器的详细步骤&#xff1a; 1. 使用App Designer添加…...

保险系统的部分模式01

Wolfgang Keller 著&#xff0c;liwenhua 译 摘要 对于许多保险公司来说&#xff0c;要建立一个能够缩短产品周期&#xff0c;柔性灵活的保险系统可谓是一个挑战。虽然这个系统有着巨大的市场&#xff0c;围绕这些相同的问题开展了许多项目&#xff0c;但是这些项目似乎仍然有…...

用你的手机/电脑运行文生图方案

随着ChatGPT和Stable Diffusion的发布&#xff0c;最近一两年&#xff0c;生成式AI已经火爆全球&#xff0c;已然成为移动互联网后一个重要的“风口”。就图片/视频生成领域来说&#xff0c;Stable Diffusion模型发挥着极其重要的作用。由于Stable Diffusion模型参数量是10亿参…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...