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以及空字符串相关推荐

  1. mysql如何进行压测_详解MySQL如何按表创建千万级的压测数据

    有时我们要对系统做压测,或者数据库压力测试,这时候需要对某些表插入几百万或者上千万数据,下面介绍下怎么利用MySQL循环和存储过程对特定表的创建千万行数据. 1. 准备测试表 CREATE TABLE ...

  2. mysqldump全量恢复_删库不跑路-详解MySQL数据恢复

    日常工作中,总会有因手抖.写错条件.写错表名.错连生产库造成的误删库表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA. 相关文章 MySQL备份策略:https://segmentfa ...

  3. mysql inner join where_详解mysql 使用left join添加where条件的问题分析

    当前需求: 有group和factor两张表,一个group对应多个factor,现在想查询有效的group和对应的有效的factor,两个表都有isDel逻辑删除标志. 最开始的错误写法一: SEL ...

  4. mysql的json函数与实例_Mysql实例详解Mysql中的JSON系列操作函数

    <Mysql实例详解Mysql中的JSON系列操作函数>要点: 本文介绍了Mysql实例详解Mysql中的JSON系列操作函数,希望对您有用.如果有疑问,可以联系我们. MYSQL必读前言 ...

  5. mysql c接口返回自增id_详解mysql插入数据后返回自增ID的七种方法

    引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 i ...

  6. mysql 新增返回主键自增id_详解mysql插入数据后返回自增ID的七种方法

    引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 i ...

  7. mysql影响行数解析_详解MySQL的数据行和行溢出机制

    一.行 有哪些格式? 你可以像下面这样看一下你的mysql行格式设置. 其实mysql的数据行有两种格式,一种就是图中的 compact格式,还有一种是redundant格式. compact是一种紧 ...

  8. mysql从挂了数据怎么恢复_详解MySQL误操作后怎样进行数据恢复

    一.开启binlog. 首先查看binlog是否开启 mysql> show variables like "log_bin"; +---------------+----- ...

  9. phpstudy mysql恢复数据_MySQL_详解MySQL误操作后怎样进行数据恢复,一、开启binlog。 首先查看binlo - phpStudy...

    详解MySQL误操作后怎样进行数据恢复 一.开启binlog. 首先查看binlog是否开启 mysql> show variables like "log_bin"; +- ...

  10. mysql 数据分组_详解MySQL 数据分组

    创建分组 分组是在select语句中的group by 子句中建立的. 例: select vend_id, count(*) as num_prods from products group by ...

最新文章

  1. 推理芯片的性能建立在优化的存储子系统设计上
  2. jieba详细使用说明
  3. 速来了解—关于机器学习的“核心”秘密
  4. KVM-Qemu-Libvirt三者之间的关系
  5. 以太坊服务器是什么_搭建以太坊节点服务器https API
  6. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第1章-绪论
  7. log4日志内容换行_springboot支付项目之日志配置
  8. 基于傅里叶算子的手势识别
  9. JavaEE Tutorials (17) - Java消息服务示例
  10. PHP-CPP开发扩展(五)
  11. 使用identity+jwt保护你的webapi(三)——refresh token
  12. 工业交换机出现故障问题排查步骤详解
  13. dbeaver导出建表语句_「mysql基础」MySQL常用语句命令总结(文字版)
  14. php phantomjs 安装_安装php-phantomjs
  15. CacheCloud-资源归档
  16. 计算机键盘卡扣原理,笔记本键盘怎么拆?笔记本键盘卡扣、排线如何打开?
  17. msocache是什么文件夹
  18. 《Proof of Federated Learning: A Novel Energy-recycling Consensus Algorithm》精读
  19. 王者荣耀android换ios,2021王者荣耀安卓账号可以转苹果吗 2021年安卓账号转移到ios方法...
  20. vue中使用天地图测距、测面、标点【一】

热门文章

  1. Python 数据分析第二期--简述数据集常用格式及操作
  2. 国内第一家出版社诉百度侵权已立案
  3. 文件上传为什么要用 enctype=multipart/form-data ???
  4. 当 el-form 组件下只有一个 el-input 组件时,按回车键会导致页面刷新
  5. crypto php,php 模拟Crypto-JS加密解密
  6. Moment.js 如何获得当前时间的零时时间
  7. 树莓成长记2:树莓派4B挂载硬盘
  8. c语言结构体语法定义,C | 结构体定义
  9. 美食主题网页设计 学生HTML个人网页作业作品下载 个人主页博客网页设计制作 大学生个人网站作业模板 dreamweaver简单个人网页制作
  10. 无尽算法之 N叉树的最大深度