Mysql 中的NULL

本文详细探讨了MySQL中NULL值与空字符串的区别,包括它们在索引效率、存储空间以及计数函数中的处理方式。介绍了如何通过ISNULL和IFNULL函数来判断和处理NULL值,并提到了NULLIF函数的用法。此外,还特别指出timestamp类型插入NULL时的特殊行为。了解这些细节对于优化查询性能和理解数据库操作至关重要。
摘要由CSDN通过智能技术生成

结论

  1. B树索引时是不存储 NULL 值的,所以如果索引的字段可以为 NULL,索引的效率会下降很多,可以使用 NOT NULL 约束及默认值
  2. 在 MySQL 中,''为空字符串或者叫做零长度字符串,其数据类型是明确的,它属于字符型。空值是不占用空间的,NULL其实并不是空值,而是要占用空间
  3. 在进行 count() 统计某列的记录数的时候,如果采用的 NULL 值,系统会自动忽略掉,但是空值是会进行统计到其中的。
  4. 判断 NULL 用 IS NULL 或者 IS NOT NULL, SQL 语句函数中可以使用 ifnull() 函数来进行处理,判断空字符用 ='' 或者 <>'' 来进行处理
  5. 对于 MySQL 特殊的注意事项,对于 timestamp 数据类型,如果往这个数据类型插入的列插入 NULL 值,则出现的值是当前系统时间。插入空值,则会出现 0000-00-00 00:00:00
  6. 使用 IS NULL 来判断 NULL ;使用 ='' 来判断0长度字符串。
  7. 查询空值的运行速度基本上为IFNULL()>is NULL>ISNULL()

相关函数

isnull(parm)

常用在 where 后面,用来判断某字段是否为null,空字符串不为 null

ifnull(parm1,parm2)

类似判断参数是否空的二元函数,如果第一个参数为空,返回第二个参数

select id,ifnull(name, '无名') as name from student

nullif(parm1,parm2)

类似判断参数是否相等的二元函数;如参数相等,返回null;不相等,返回第一个参数值

select id, nullif(id, gender) as gender from student
select id, nullif(name, '张三') as nam
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值