从本质上区别:
1、空值不占空间
2、null值占空间
 
通俗的讲:
空值就像是一个真空转态杯子,什么都没有,而null值就是一个装满空气的杯子,虽然看起来都是一样的,但是有着本质的区别。
 
 
 
例子:
创建一个test表,colA是不可以存放null值的,colB是能存放null值的。
 CREATE TABLE `test` (
`colA` varchar() NOT NULL,
`colB` varchar() DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入一个null值试试,会发生什么情况?
 INSERT INTO `test`(`colA`, `colB`) VALUES (NULL, NULL);

//出现报错,原因是colA是不能插入null值。

 
 
那么如果两个字段同时插入空值,会怎么样。
 INSERT INTO `test`(`colA`, `colB`) VALUES ('', '');

插入成功,说明字段即使设置为null值的时候,是可以插入空值的

 
 
---------------------------------------------------------------查询---------------------------------------------------------
现在表里有三条数据
 
 
接下来我们使用 is not null 和 <> 检索数据表里的数据
1、使用IS NOT NULL 的查询
 SELECT * FROM `test` WHERE colA IS NOT NULL

 
 SELECT * FROM `test` WHERE colB IS NOT NULL

结论:使用 IS NOT NULL 查询不会过滤空值,但是会过滤掉NULL。
 
 
2、使用 <> 的查询
 SELECT * FROM `test` WHERE colA <> '';

 SELECT * FROM `test` WHERE colA <> '';

结论:使用 <> 会过滤掉NULL和空值。
 
 
3、使用 count 查询
 SELECT COUNT(colA) FROM `test`;

 
 SELECT COUNT(colB) FROM `test`;

结论:使用 count 会过滤掉 NULL 值,但是不会过滤掉空值。
 
 
总结
1、空值不占空间,NULL值占空间(占用一个字节)。
2、当字段不为NULL时,也可以插入空值。
3、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。
4、使用 <> 查询时,会筛选掉空值和NULL值。
5、使用 count 统计时会过滤掉 NULL 值,但是不会过滤掉空值。

MySQL的空值和NULL区别的更多相关文章

  1. Mysql的空值与NULL的区别

    Mysql数据库是一个基于结构化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中执行SQL语句,需要小心两个陷阱. 陷阱一:空值不一定为空 空值是一个比较特殊的字段. ...

  2. 你还不知道mysql中空值和null值的区别吗?

    前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...

  3. SQL中空值与NULL区别

    很多人都有过这样的问题吧   在SQL中填充空值与NULL有什么区别 现在我以一个实例给大家分享一下自己的想法  恳请大家给予批评也指正 谢谢 创建一个监时表 CREATE TABLE #temp ( ...

  4. 空值和null区别

    空值代表杯子是真空的,NULL代表杯子中装满了空气

  5. MySQL 中NULL和空值的区别,索引列可以有空值或者null吗?

    空值跟null的区别.mysql官方: “NULL columns require additional space in the row to record whether their values ...

  6. mysql 空值(null)和空字符('')的区别

    日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符. 空字符(")和空值(null)表面上看都是空,其实存在一些差异: 定义: 空值(NULL)的长度 ...

  7. 【MySQL】探究之null与not null

    相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 我字段类型是not null,为什么我可以插入空值 为毛not null的效率比null高 判断字段不为空的时候 ...

  8. 转!!mysql 字段 is not null 和 字段 !=null

      今天在查询数据时,查到包含一条某个时间startTime(该字段默认为null ) 为null的记录,想把它过滤,加了 startTime != null 的条件,结果记录都没了,应该用条件 is ...

  9. Mysql中FIND_IN_SET()和IN区别简析

    来源:http://www.jb51.net/article/125744.htm 测试SQL: CREATE TABLE `test` ( `id` int(8) NOT NULL auto_inc ...

随机推荐

  1. Vue.js基础2

    声明式渲染 Vue.js 的核心是一个允许采用简洁的模板语法来声明式的将数据渲染进 DOM: <div id="app"> {{ message }} </div ...

  2. 老生常谈:++a与a--区别

    a++的作用是先对a进行操作再++:a--则相反. 如: int a = 1;int b = a++; //此时先运算b=a,再a++,故b=1,a=2int c = --a; //此时先--a,再运 ...

  3. CentOS 7运维管理笔记(5)----源代码安装Apache 2.4,搭建LAMP服务器

    ##########################    2016-07-07-Thu--20:34 补充 ##################### 编译安装OpenSSL笔记: 如果系统要使用 ...

  4. UMTSkeeper: keep your UMTS/GPRS/GSM connection alive automatically

    UMTSkeeper: keep your UMTS/GPRS/GSM connection alive automatically by Elias from Mintaka This page i ...

  5. JIAVA知识点整理

    Java具有垃圾回收机制,程序退出之后,使用的所有内存全部都将被释放,如要保存数据你就要建立文件,因为当保存时是保存在运行内存中的. int 有返回值void 不需要返回值 1.判断语句if else ...

  6. Hadoop学习---Hadoop的HBase的学习

    Hbase Hbase的特点: Hbase是bigtable的开源的仿制版本 建立在HDFS之上 可靠性,靠性能 大:一个表可以有上亿行,上百万列 面向列:面向列(族)的存储和权限控制,列(族)独立检 ...

  7. 有时间,可以研究哈redis的源代码

    1 2 3 4 留位,以后自己用!

  8. Hbase集群部署及shell操作

    本文详述了Hbase集群的部署. 集群部署 1.将安装包上传到集群并解压 scp hbase-0.99.2-bin.tar.gz mini1:/root/apps/ tar -zxvf hbase-0 ...

  9. 转:Recsys2013论文导读

    月中在香港参加recsys2013会议,文章不少,对我有价值的并不算多,再跟目前工作相关的就更少了.这里过滤了几篇我觉得比较有意思的文章,加上了自己的理解,作为导读. A Fast Parallel ...

  10. css3实现渐变

    chrome,苹果浏览器:—webkit- firebox浏览器:-moz- Opera浏览器:-o- 渐变分为:线性渐变(Linear Gradients)向下/向上/向左/向右/对角方向 径向渐变 ...