(持续更新)2021-01-20-SQL(SQLZOO Using NULL)刷题精华部分-HK

SQLZOO - Using NULL

小目录:(SQLZOO Using NULL)

  • order by 2
  • is NULL 和 = NULL
  • NULL的分组、排序、计数
  • 如何将NULL替换成你想要的东西
  • 条件分支语句:case when用法

正文:

  1. order by 2
    根据select字段的第二个字段进行排序
SELECT a, b
FROM TA
ORDER BY 2

等价于

SELECT a, b
FROM TA
ORDER BY b
  1. is NULL 和 = NULL

-SQL中存在三值逻辑:true,false,unknown;
-当你用任何值(包括NULL)与NULL做比较时,都会得到unknown;
-在查询语句中(where和having),unknown的返回值时false,所以如果使用something = NULL或 something <> NULL,语句中返回false,你将得不到结果;

select name
from teacher
where dept is NULL

需要注意的是:(check约束)
-在check约束中,unknown的返回值是true,所以当我们设置字段 >=0的情况下,可以在该字段中插入NULL;

  1. NULL的分组、排序、计数

-NULL属于一组;
-group by会把NULL分为一组;
-order by会把NULL值排列在一起,占用一个序位;
-COUNT()会把NULL值过滤,可以用子查询统计NULL的个数

  1. 如何将NULL替换成你想要的东西

使用COALESCE(x, y, z)按顺序判断x、y、z,谁不是NULL,就输出谁,并且不继续判断此变量后面那个变量;

示例:
把值为空(NULL)的电话都替换成0000;

SELECT COALESCE(number, '0000')
FROM number
  1. 条件分支语句:case when用法

用法:
case when (条件1)then (结果1)
when (条件2)then (结果2)
else (其他情况下的统一结果)
end

示例:
根据部门id,为教师打上学术领域标签;

select t.name, case when (d.id = 1 or d.id = 2) then 'Sci' 
                    when (d.id = 3) then 'Art'
                    else 'None' end 
                    AS AcademicType
from teacher t LEFT JOIN dept d ON t.dept = d.id

猜你喜欢

转载自blog.csdn.net/weixin_42012759/article/details/112860724
今日推荐