NULL是SQL中的一个关键字,它表示缺少值或未知值。在关系型数据库中,该字段如果没有被赋值或者赋值为NULL,则表示该字段为空。
1、null的基本用法
1.1
在SQL语句中,我们可以使用IS NULL或IS NOT NULL来判断某个字段是否为NULL。例如:
SELECT * FROM table_name WHERE column_name IS NULL;
1.2
可以使用xxx is not null来select出是否为空的字段。如果不是空,返回1,否则为0;
SELECT COUNT(*) AS count, Role, (building IS NOT NULL) AS building_not_null
FROM employees
GROUP BY building_not_null;
2、NULL的性质
(1)NULL并不等于任何其他值,也不能和其他值进行算术运算或字符串比较。
- 如果直接让一个值加上NULL,通常会得到NULL作为结果。在SQL中,如果有任意一个运算符的输入参数是NULL值,则结果也为NULL。
- 这被称为三值逻辑,包括TRUE、FALSE和UNKNOWN(表示未知或不适用)。因此,任何表达式(例如加法、减法、乘法等)都不能将NULL与其他值进行运算,如果其中有一个操作数为NULL,则结果始终为NULL。
(2)对于分组函数,不会将NULL计入计算。
在SQL中,如果计算AVG(平均数)时当前列中存在NULL值,平均数会被影响。具体来说,NULL值会被忽略,不参与平均数的计算。
例如,假设有一个表t,包含3个记录和一个空值:
id name score
1 Alice 80
2 Bob NULL
3 Charlie 90
执行以下查询:
SELECT AVG(score) FROM t;
由于Bob的score值为NULL,因此不参与平均数的计算,该查询将返回“85”,即(80+90)/2=85。
3、一些日常小结
(1) sql里的as就是作为什么什么的名称,的含义。
例如:
SELECT COUNT(*) AS count, Role, (building IS NOT NULL) AS building_not_null
FROM employees
WHERE building IS NOT NULL
GROUP BY Role, building_not_null;
(2) group by 多个参数的理解
单个group:必须确保SELECT语句中选择的列与GROUP BY子句中指定的列一致
多个group:在SQL中,使用GROUP BY子句的目的是将数据按照一个或多个列进行分组,然后对每个分组执行聚合函数计算。如果有两个分组,那就是对两个分组进行两两组合的分组后,再进行查询,例如:
SELECT Role,name,AVG(Years_employed)
FROM employees
GROUP BY Role, name;