概述
- 空值是其值不知道、不确定、不存在的值
- 数据库中有了空值,会影响许多方面,如聚集函数预算的正确性,不能参与算数、比较或逻辑运算等
例如:
SELECT * FROM SC
+----------------+------------------+-----------------+
| NAME
| COURSE
| SCORE
|
+----------------+------------------+-----------------+
| Tom
| Math
|
100 |
| David
| Math
|
50 |
| Andy
| Math
|
|
+----------------+------------------+-----------------+
其中Andy同学的分数是空值,那么此时计算Math平均分是多少呢?
以前,很多DBMS将空值按默认值处理,比如数字被处理成0,引发计算错误。
在现行SQL标准和流行DBMS中,空值被用一种特殊的符号Null来标记。
判断空值
空值检测 is [not] null
SELECT * FROM sc WHERE score is null
+----------------+------------------+-----------------+
| NAME
| COURSE
| SCORE
|
+----------------+------------------+-----------------+
| Andy
| Math
|
|
+----------------+------------------+-----------------+
注:不能写成 score=null,空值是不能进行运算的
现行DBMS空值处理小结
- 除
is [not] null外,空值不满足任何查找条件 - 如果
null参与算术运算,则该算术表达式的值为null - 如果
null参与比较运算,则结果可视为false。在SQL-92中可看成unknown - 如果
null参与聚集运算,则除count(*)之外其他聚集函数都忽略null
示例1
SELECT AVG(score) FROM SC
+----------------------+
| AVG(score)
|
+----------------------+
| 75.0000
|
+----------------------+
这里,Andy的分数被聚集函数AVG忽略
示例2
SELECT COUNT(*) FROM SC
+--------------------+
| COUNT(*)
|
+--------------------+
| 3
|
+--------------------+
SELECT COUNT(SCORE) FROM SC
+------------------------+
| COUNT(SCORE)
|
+------------------------+
| 2
|
+------------------------+
可以看到,除了COUNT(*)之外即使是COUNT(score)也忽略了null
转载于:https://www.cnblogs.com/velscode/p/10576289.html
最后
以上就是单纯玉米最近收集整理的关于空值的处理概述判断空值现行DBMS空值处理小结的全部内容,更多相关空值内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复