从本质上区别:
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. 机智的Popup,带着简单的图表感觉酷酷的

    之前有提过用 InfoTemplate 类对 FeatureLayer 的基本信息进行展示,今天为大家介绍 esri/dijit/Popup 的使用,这东西还有 简单的图表展示功能呢! <!DO ...

  2. maoaolianxi

    package dududu; public class maopao { public static void main(String[] args) { // TODO 自动生成的方法存根 ,,, ...

  3. 微信小程序开发4-JSON

    1.JSON是JavaScript语法的子集 2.JSON的语法规则 数据在名称/值对中 数据由逗号分隔 大括号保存对象 中括号保存数组 3.JSON 值可以是: 数字(整数或浮点数) 字符串(在双引 ...

  4. [翻译] Macros with a Variable Number of Arguments - GCC

    可变参数宏(Variadic Macro) 在1999年的ISO C标准中,可以声明一个像函数一样接受可变参数的宏.定义这种宏的语法与函数的定义相似.这是一个例子: #define debug(for ...

  5. C++异常安全

    转自:http://www.cnblogs.com/zgfLawliet/p/3417308.html   异常安全的代码是指,满足两个条件 1异常中立性 : 是指当你的代码(包括你调用的代码)引发异 ...

  6. 未在本机注册Microsoft.ACE.OleDb.12.0

    服务器版本:Windows Server 2008 R2 64位.IIS7 已经安装了Microsoft Access database engine 2010 X64. 在服务器上可以用SQL Se ...

  7. 【Leetcode】【Medium】Letter Combinations of a Phone Number

    Given a digit string, return all possible letter combinations that the number could represent. A map ...

  8. win10系统 WMI Provider Host cpu 占用过高

    今天上班,发现系统有点卡,QQ总是没响应. 打开任务管理器,发现有一个程序- WMI Provider Host 占用cpu竟然高达80% 然后通过事件查看器发现是一个pid为9832的程序造成的 然 ...

  9. 网站渗透常用到的Python小脚本

    0×00渗透的很多时候,找到的工具并不适用,自己码代码才是王道,下面三个程序都是渗透时在网络上找不到合适工具,自己辛苦开发的,短小使用,求欣赏,求好评. 0×01记录root密码小工具 root.py ...

  10. Sql的一些常规判断

    sql server中如何判断表或者数据库的存在,但在实际使用中,需判断Status状态位:其中某些状态位可由用户使用 sp_dboption(read only.dbo use only.singl ...