打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL基础入门:第4课:特殊的NULL值(4)

把NULL值单独拿出来说,是因为在数据库中,NULL值是一个非常特殊的值。不注意的话,很容易犯错误。

在创建表时,对于表中的每个字段,可以指定字段是否必须包含值。对于不是必须包含值的字段,可以向字段中插入NULL值。

比如像下面这样,定义teacher_id和teacher_name这两个字段必须有值,而gender字段可以没有值。

  1. CREATE TABLE teacher

  2. (

  3. teacher_id VARCHAR(20) NOT NULL,

  4. teacher_name VARCHAR(50) NOT NULL,

  5. gender VARCHAR(10) NULL,

  6. primary key ( teacher_id )

  7. );

每个字段,要么是NOT NULL,要么是可为NULL。如果不指定的话,默认的是可为NULL,也就是允许不包含值。

说了这么多,那么NULL值到底是什么呢?

其实,NULL值什么都不是!记住,是什么都不是,没有人知道NULL值是什么!

那为什么会在数据库中设计这样一个NULL值呢?是因为用它来表示一种”不知道“、”不确定“的状态。它既不等于0,也不等于空格’ ‘,更不等于空字符串”,甚至,它也不等于NULL。

想像一下,如果我们不知道张三的年龄,那么可以将张三的年龄赋值为NULL,而同样的,我们也不知道李四的年龄,那么也可以将李四的年龄赋值为NULL。这个时候如果问,张三的年龄与李四的年龄一样吗?那肯定是一个无法回答的问题。这样去理解NULL值与NULL值不相等,是不是容易多了。

那既然NULL值跟什么都不相等,我们如何去判断一个字段的值为NULL值呢?

可以使用如下语句来判断:

  1. gender is null; --判断gender字段为null值

  2. gender is not null; --判断gender字段不为null值

使用gender = null;这样的判断方式是错误的!

其实,NULL值在数据库中的作用还是蛮大的。举个例子,一次期中考试过后,学校要对进步比较大的同学进行奖励。对于上学期期末考试总成绩在300分以下的同学,如果这次期中考试总成绩在500分以上,则发放200元奖学金;在400-500分之间,则发放100元奖学金;在400分以下,则发放0元奖学金,也就是不奖励。

画出表格如下:

那么上面这种描述,对上学期期末考试总成绩在300分以上的同学如何奖励并没有说明。此时,我们就可以为奖学金字段赋值为NULL,表示这个时候,我们还不知道学校如何对这部分学生进行奖励。

鉴于NULL值的特殊性,在使用NULL值时,我给出了下面两点忠告供大家参考:

允许NULL值的字段,不能作为主键字段;
尽量避免将字段设置为可为NULL,事实上,应该定下规范,所有字段都必须设置为NOT NULL;


Mac老师个人微信号:201855204

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
SQL NOT NULL 约束
最全sql基础语句总结!
MySQL基础入门
MySQL数据库实操教程(07)——表的约束
mysql笔记
Oracle数据库数据对象分析(中)--(1)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服