详解mysql NULL和 IS NOT NULL以及空字符串
1、NULL 和 空字符串的区别
"NULL" 表示的是一种数据类型,表示未知
" " 空字符串的数据类型是字符串,只是这个字符串比较特殊,什么都没有
怎么理解这个NULL呢?其实就把它当做是一种叫 未知的数据类型 来理解就好了。
2、NULL值查询效率
NULL 其实并不是空值,而是要占用空间,所以mysql在进行比较的时候,NULL 会参与字段比较,所以对效率有一部分影响。并且对表索引时是不会存储NULL值的,所以如果索引的字段为NULL时,索引的效率会下降很多,因此我们设置某个字段类型时尽量不要设置NULL
3、判断一个字段是否为空,应该怎么查询
首先建立user表,填入以下数据:
下面我们执行以下sql查询
# 查询 name 为空的数据
SELECT * FROM `user` WHERE name = NULL;
SELECT * FROM `user` WHERE name IS NULL;
SELECT * FROM `user` WHERE name = '';
SELECT * FROM `user` WHERE name IS NULL OR `name`='';
# 查询 name 不为空的数据
SELECT * FROM `user` WHERE name IS NOT NULL;
SELECT * FROM `user` WHERE name <> NULL;
SELECT * FROM `user` WHERE name = NULL; 结果1:
SELECT * FROM `user` WHERE name IS NULL; 结果2:
SELECT * FROM `user` WHERE name = ' '; 结果3:
SELECT * FROM `user` WHERE name IS NULL OR `name`=' '; 结果4:
SELECT * FROM `user` WHERE name IS NOT NULL; 结果5:
SELECT * FROM `user` WHERE name <> NULL; 结果6:
从查询结果可以得出:
1、使用 IS NULL 查出的是 字段为 未知类型的数据
2、使用IS NOT NULL 查出的是 字段不是 未知类型的数据
3、使用 IS NULL OR `name`=' ' 查询的是 未知类型和空字符串类型的数据
总之,我们只要把 NULL 当做是一种数据类型就很好理解这个字段了
详解mysql NULL和 IS NOT NULL以及空字符串相关推荐
- mysql如何进行压测_详解MySQL如何按表创建千万级的压测数据
有时我们要对系统做压测,或者数据库压力测试,这时候需要对某些表插入几百万或者上千万数据,下面介绍下怎么利用MySQL循环和存储过程对特定表的创建千万行数据. 1. 准备测试表 CREATE TABLE ...
- mysqldump全量恢复_删库不跑路-详解MySQL数据恢复
日常工作中,总会有因手抖.写错条件.写错表名.错连生产库造成的误删库表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA. 相关文章 MySQL备份策略:https://segmentfa ...
- mysql inner join where_详解mysql 使用left join添加where条件的问题分析
当前需求: 有group和factor两张表,一个group对应多个factor,现在想查询有效的group和对应的有效的factor,两个表都有isDel逻辑删除标志. 最开始的错误写法一: SEL ...
- mysql的json函数与实例_Mysql实例详解Mysql中的JSON系列操作函数
<Mysql实例详解Mysql中的JSON系列操作函数>要点: 本文介绍了Mysql实例详解Mysql中的JSON系列操作函数,希望对您有用.如果有疑问,可以联系我们. MYSQL必读前言 ...
- mysql c接口返回自增id_详解mysql插入数据后返回自增ID的七种方法
引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 i ...
- mysql 新增返回主键自增id_详解mysql插入数据后返回自增ID的七种方法
引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 i ...
- mysql影响行数解析_详解MySQL的数据行和行溢出机制
一.行 有哪些格式? 你可以像下面这样看一下你的mysql行格式设置. 其实mysql的数据行有两种格式,一种就是图中的 compact格式,还有一种是redundant格式. compact是一种紧 ...
- mysql从挂了数据怎么恢复_详解MySQL误操作后怎样进行数据恢复
一.开启binlog. 首先查看binlog是否开启 mysql> show variables like "log_bin"; +---------------+----- ...
- phpstudy mysql恢复数据_MySQL_详解MySQL误操作后怎样进行数据恢复,一、开启binlog。
首先查看binlo - phpStudy...
详解MySQL误操作后怎样进行数据恢复 一.开启binlog. 首先查看binlog是否开启 mysql> show variables like "log_bin"; +- ...
- mysql 数据分组_详解MySQL 数据分组
创建分组 分组是在select语句中的group by 子句中建立的. 例: select vend_id, count(*) as num_prods from products group by ...
最新文章
- 推理芯片的性能建立在优化的存储子系统设计上
- jieba详细使用说明
- 速来了解—关于机器学习的“核心”秘密
- KVM-Qemu-Libvirt三者之间的关系
- 以太坊服务器是什么_搭建以太坊节点服务器https API
- 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第1章-绪论
- log4日志内容换行_springboot支付项目之日志配置
- 基于傅里叶算子的手势识别
- JavaEE Tutorials (17) - Java消息服务示例
- PHP-CPP开发扩展(五)
- 使用identity+jwt保护你的webapi(三)——refresh token
- 工业交换机出现故障问题排查步骤详解
- dbeaver导出建表语句_「mysql基础」MySQL常用语句命令总结(文字版)
- php phantomjs 安装_安装php-phantomjs
- CacheCloud-资源归档
- 计算机键盘卡扣原理,笔记本键盘怎么拆?笔记本键盘卡扣、排线如何打开?
- msocache是什么文件夹
- 《Proof of Federated Learning: A Novel Energy-recycling Consensus Algorithm》精读
- 王者荣耀android换ios,2021王者荣耀安卓账号可以转苹果吗 2021年安卓账号转移到ios方法...
- vue中使用天地图测距、测面、标点【一】
热门文章
- Python 数据分析第二期--简述数据集常用格式及操作
- 国内第一家出版社诉百度侵权已立案
- 文件上传为什么要用 enctype=multipart/form-data ???
- 当 el-form 组件下只有一个 el-input 组件时,按回车键会导致页面刷新
- crypto php,php 模拟Crypto-JS加密解密
- Moment.js 如何获得当前时间的零时时间
- 树莓成长记2:树莓派4B挂载硬盘
- c语言结构体语法定义,C | 结构体定义
- 美食主题网页设计 学生HTML个人网页作业作品下载 个人主页博客网页设计制作 大学生个人网站作业模板 dreamweaver简单个人网页制作
- 无尽算法之 N叉树的最大深度