美文网首页
mysql中null和空值的区别

mysql中null和空值的区别

作者: 菜鸟要逆袭 | 来源:发表于2018-01-30 15:38 被阅读0次

背景:

今天因为MySQL中NULL和空值的区分错误,解决一个很简单的数据库查询问题花了一个小时,很是懊悔,所以开始正文吧!

区别详细:

  • 1 空值和NULL为两个概念
    空值在MySQL中不占空间,NULL在mysql中占有空间。

  • 2 空值不一定为空
    ① 在MySQL数据库中,空值是一个比较特殊的字段,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空。
    ② 一个是具有auto_increment属性的列。如果往这属性的列中插入Null值的话,则系统会插入一个正整数序列。
    ③ 一个是具有TimesTamp数据类型的列。如果往这个数据类型的列中插入Null值,则其代表的就是系统的当前时间。
    ④ 在其他数据类型中,如字符型数据的列中插入NULL的数据,则其插入的就是一个空值。

  • 3空值不一定等于空字符
    ① IS NULL 和IS NOT NULL关键字。如果要判断某个字段是否含用空值的数据,需要使用特殊的关键字。其中前者表示这个字段为空,后者表示这个字段为非空。在Select语句 的查询条件中这两个关键字非常的有用。
    ② 是Count等统计函数,在空值上也有特殊的应用。如现在需要统计用户信息表中有电话号码的用户数量,此时就可以使用count函数、同时将电话号码作为参数来使用。因为在统计过程中,这个函数会自动忽略空值的数据。此时统计出来的就是有电话号码的用户信息。如果采用的是空字符的数据,则这个函数会将其统计进去。统计刚才建立的两条记录时,系统统计的结果是1,而不是2。可见系统自动将NULL值的数据忽略掉了。

示例:

id (bigint increment) sid (bigint) date
1 NULL 2018-1-1 00:00:00
2 0 NULL
3 0 2018-1-1 00:00:00
//获得sid为空的数量:1
SELECT COUNT(*) FROM TEST WHERE SID IS NULL; 

//获得sid不为空的数量:2
SELECT COUNT(*) FROM TEST WHERE SID IS NOT NULL; 

//获得sid为空值的数量:2
SELECT COUNT(*) FROM TEST WHERE SID = ''; 

//获得sid为‘0’的数量:2
SELECT COUNT(*) FROM TEST WHERE SID = '0'; 

//获得date为空的数量:1
SELECT COUNT(*) FROM TEST WHERE DATE IS NULL; 

//获得date不为空的数量:2
SELECT COUNT(*) FROM TEST WHERE DATE IS NOT NULL; 

//获得date为空值的数量:0
SELECT COUNT(*) FROM TEST WHERE DATE =''; 

注:上面sid为空值和sid为'0'的查询结果相同是因为,mysql默认bigint的值为NULL,但是NULL又不是INT类型,所以mysql开发人员默认将其默认值设为'0',这一点一定要注意,今天就因为这个卡了一个小时 %>_<%

相关文章

  • Oracle |  空值null和空字符串的区别

    Mysql中空字符<''>和空值的区别,一直都知道mysql中空字符串(”)和空值(null)之间有区别,但是没好...

  • NULL和空值

    NULL也就是在字段中存储NULL值,空值也就是字段中存储空字符(’’)。 1、占用空间区别 mysql> sel...

  • mysql中null和空值的区别

    背景: 今天因为MySQL中NULL和空值的区分错误,解决一个很简单的数据库查询问题花了一个小时,很是懊悔,所以开...

  • MySQL 中 NULL 和空值的区别?

    做一个积极的人编码、改 bug、提升自己我有一个乐园,面向编程,春暖花开! 01 小木的故事 作为后台开发,在日常...

  • JavaScript中Null和Undefined的区别

    JavaScript中Null和Undefined的区别 Null: null是js中的关键字,表示空值,null...

  • 面试总结

    1.undefined和null的区别 null: Null类型,代表“空值”,代表一个空对象指针,使用typeo...

  • JS考核将要问题摘要

    undefined和null的区别? Null类型,代表“空值”,代表一个空对象指针,使用typeof运算得到 “...

  • 无标题文章

    null和undefined到底有什么区别? null 表示一个对象是“没有值”的值,也就是值为“空...

  • 十二、Mysql对Null的判断

    Mysql数据库中的Null是一个特殊的存在,表示该记录没有值,不同于空('')和0;1)应该使用IS NULL或...

  • 为何 ConcurrentHashMap 不支持 null 键和

    区别 HashMap 同时支持 null 键和 null 值,而在 ConcurrentHashMap 中,却都不...

网友评论

      本文标题:mysql中null和空值的区别

      本文链接:https://www.haomeiwen.com/subject/gdlczxtx.html