关于MYSQL中的NULL和 is null 和 <> null 的区别

关于MYSQL中的NULL和 is null 和 <> null 的区别

其实 is null 和 = null的区别是很大的 由于对这两者的区别不太清晰 所以在在日常编程中出现了错误 所以今天想谈一谈两者 记录一下

1. 创建一张简单用户表

CREATE TABLE `t_sys_user` (
`ID` INT ( 11 ) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`USER_CODE` VARCHAR ( 45 ) NOT NULL COMMENT '用户名code',
`USER_NAME` VARCHAR ( 100 ) NULL COMMENT '姓名name',
`PASS_WORD` VARCHAR ( 100 ) NULL COMMENT '密码',
`CREATE_TIME` datetime ( 0 ) DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`UPDATE_TIME` datetime ( 0 ) DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`STATUS` CHAR ( 1 ) NULL COMMENT '状态:1-有效,0-无效,2-删除',
PRIMARY KEY ( `ID` ) 
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMMENT = '用户表';

注意一下两个字段默认值区别在这里插入图片描述

2、简单插入三条数据

INSERT INTO `t_sys_user` ( `USER_CODE`, `USER_NAME`, `PASS_WORD`, `CREATE_TIME`, `UPDATE_TIME`, `STATUS` )
VALUES
	( 'lisi', 'null', '$2a$10$VRxdBpot1YCaEVGgbGDLleRonQ9dOxQ8Dt1mQpTetzfwX8PNXS8EG', '2022-06-24 15:17:45', '2022-06-24 15:17:45', '1' ),
	( 'zhangsan', '张三', '$2a$10$VRxdBpot1YCaEVGgbGDLleRonQ9dOxQ8Dt1mQpTetzfwX8PNXS8EG', '2022-06-24 15:17:58', '2022-06-24 15:17:58', '1' );
INSERT INTO `t_sys_user`(`USER_CODE`, `USER_NAME`, `PASS_WORD`, `CREATE_TIME`, `UPDATE_TIME`, `STATUS`) VALUES ('wangwu', NULL, '$2a$10$VRxdBpot1YCaEVGgbGDLleRonQ9dOxQ8Dt1mQpTetzfwX8PNXS8EG', '2022-06-24 15:18:25', '2022-06-24 15:18:25', '1');

到目前为止 简单的数据已经准备好了

在这里插入图片描述

查询用户 姓名作为where条件

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

由上可以看出 这几个sql单从字面上看差不多 但是运行起来区别挺大的

NULL表示不可知不确定,NULL不与任何值相等(包括其本身)

IS NULL 判断某个字符是否为空,并不代表空字符或者是0

=NULL 是判断某个值是否等于NULL

默认情况下,推荐使用 IS NOT NULL去判断,因为SQL默认情况下对 != Null 的判断会永远返回 0 行,但没有语法错误。
总之,要判断一个数是否等于NULL只能用 IS NULL 或者 IS NOT NULL 来判断
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值