一,空值
1.unknown ,比如1 < null 的结果不知道是什么,所以将SQL将涉及任何空值的比较定为unknown。
true or unknown 的结果是 true
true and unknown 的结果是 unknown
not unknown 的结果是 unknown
例如:找出instructor关系中salary为空值的所有教师,select name from instructor where salary is null;
是 is null 不是 = null
2.查询数据库中的数据并去重。例如:查询2018年选了至少一门选修课的学生的数量,其中有的学生选了多门课程,所以需要去掉重复的数据 。SELECT COUNT(DISTINCT `name`) FROM `student` WHERE `year` = 2018; 根据学生姓名去重。
3.having子句,having子句中的谓词在形成分组后才起作用,因此可以使用聚集函数。例如,查询平均年龄大于20的班级 SELECT className, AVG(age) FROM `student` GROUP BY className HAVING AVG(age) > 20
4.集合成员资格 in 与not in
例如:查询在2017和2018年同时开课的课程。select distinct course from table where year = 2017 and course in (select course from table where year = 2018)
例如:查询在2017年开课但不在2018年开课的课程。select distinct course from table where year = 2017 and course not in (select course from table where year = 2018)
例如:查询名字既不叫jim 也 不叫jack 的学生的名字。select name from table where name not in ('jim','jack')
5.集合的比较 some。 =some 等价于 in
例如:找出满足下面条件的所有教师的名字,他们的工资至少比较比计算机系的某一教师的工资要高。
第一种写法,select