一、单表查询 1. group by 子句 group by 子句将查询结果按某一列或多列的值分组,值相等的为一组。 如果分组后还要求按一定的条件对这些组进行筛选,可以使用having短语指定筛选条件。 where子句与having短语的区别在于作用对象不同。where子句作用与基本表或视图,而having短语作用于组。 二、连接查询 前面的查询都是针对一个表进行的,若一个查询同时涉及两个以上的表,则称之为连接查询。 1. 等值与非等值连接查询 当连接运算符为=时,称为等值连接,否则为非等值连接。 若在等值连接中把目标列中重复的属性列去掉则为自然连接。 2. 自身连接 连接操作不仅可以在两个表之间进行,也可以是一个表与其自己进行连接,称为表的自身连接。 3. 外连接 在通常的连接操作中,只有满足连接条件的元组才能作为结果输出。 如果想以student表为主体列出每个学生的基本情况及其选课情况。若某个学生没有选课,仍把舍弃的student元组保存在结果关系中,而在选课表的属性上填空值null,这时就需要使用外连接。 左外连接列出左边关系中所有的元组。 右外连接列出右边关系中所有的元组。 4. 复合条件连接 where子句中有多个连接条件,称为复合条件连接。 三、嵌套查询 在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询称为嵌套查询。 四、集合查询 select语句的查询结果是元组的集合,所以多个select语句的结果可进行集合操作。 集合操作主要包括:并操作union、交操作intersect、和差操作 except。 ps:参加集合操作的各查询结果的列数必须相同,对应项的数据类型也必须相同。