![7b3d6a22bd16a8a22b5111b32c6490b7.png](https://img-blog.csdnimg.cn/img_convert/7b3d6a22bd16a8a22b5111b32c6490b7.png)
SQL Lesson 8: 关于特殊关键字 NULLs
之前我们已经接触过NULL
. 在数据库中,NULL
表达的是 "无"的概念,或者说没有东西。因为 NULL的存在,我们需要在编写SQL时考虑到某个属性列可能是 NULL的情况, 这种特殊性会造成编写SQL的复杂性,所以没有必要的情况下,我们应该尽量减少 NULL
的使用,让数据中尽可能少出现 NULL
的情况。
如果某个字段你没有填写到数据库,很可能就会出现NULL
。所有一个常见的方式就是为字段设置默认值
,比如 数字的默认值设置为0,字符串设置为 ""字符串. 但是在一些NULL
表示它本来含义的场景,需要注意是否设置默认值还是保持NULL
。 (f比如, 当你计算一些行的平均值的时候,如果是0会参与计算导致平均值差错,是NULL
则不会参与计算).
还有一些情况很难避免 NULL
的出现, 比如之前说的 outer-joining 多表连接,A和B有数据差异时,必须用 NULL
来填充。这种情况,可以用IS NULL
和 IS NOT NULL
来选在某个字段是否等于 NULL
.
在查询条件中处理 NULLSELECT column, another_column, … FROM mytable WHERE column IS/IS
NOT
NULL
AND/OR
another_condition
AND/OR …;
练习
还是会用到 Employees 和 Buildings 两个表,这一次我们雇佣了一些雇员但还没有分配办公室. 你需要综合之前的知识来解决这些问题!
![4a682cd37772fb1ac29274988d5be810.png](https://img-blog.csdnimg.cn/img_convert/4a682cd37772fb1ac29274988d5be810.png)