第三章 关系数据库标准语言SQL

第一节 第二节 第三节 第四节

第三节 查 询   (1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)(13)
五、对查询结果分组,使用GROUP BY子句分组,细化集函数的作用对象,未对查询结果分组,集函数将作用
于整个查询结果,对查询结果分组后,集函数将分别作用于每个组,使用GROUP BY子句分组。
    [例] 求各个课程号及相应的选课人数。
    SELECT Cno,COUNT(Sno)
    FROM SC
    GROUP BY Cno;
    结果:
        Cno COUNT(Sno)
          1 22
          2 34
          3 44
          4 33
          5 48
    GROUP BY子句的作用对象是查询的中间结果表。分组方法:按指定的一列或多列值分组,值相等的为一
组,使用GROUP BY子句后,SELECT子句的列名列表中只能出现分组属性和集函数。使用HAVING短语筛选最终
输出结果。
    [例] 查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数。
        SELECT Sno, COUNT(*)
        FROM SC
        WHERE Grade>=90
        GROUP BY Sno
        HAVING COUNT(*)>=3;
    只有满足HAVING短语指定条件的组才输出。HAVING短语与WHERE子句的区别:作用对象不同。WHERE子句
作用于基表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。
3.3.3 连接查询,同时涉及多个表的查询称为连接查询,用来连接两个表的条件称为连接条件或连接谓词。
    一般格式:
        [<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2>
    比较运算符:=、>、<、>=、<=、!=
        [<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3>

吉林大学网络教育学院 版权所有