[计算机软件及应用]第三章 关系数据库标准语言3.pptVIP

  • 5
  • 0
  • 约1.07万字
  • 约 55页
  • 2018-03-04 发布于浙江
  • 举报

[计算机软件及应用]第三章 关系数据库标准语言3.ppt

[计算机软件及应用]第三章 关系数据库标准语言3

3.4.2 连接查询 连接查询:同时涉及多个表的查询。 连接条件或连接谓词:用来连接两个表的条件。 一般格式: [表名1.]列名1 比较运算符 [表名2.]列名2 [表名1.]列名1 BETWEEN [表名2.]列名2 AND [表名2.]列名3 连接字段:连接谓词中的列名称 。 注意:连接条件中各连接字段类型必须是可比的,但名字可不相同。 连接算法 排序合并法(SORT-MERGE) 索引连接(INDEX-JOIN) 连接查询的类别 一、等值与非等值连接查询 二、自身连接 三、复合条件连接 四、外连接 一、等值与非等值连接查询 等值连接:连接运算符为 = [例16]查询每个学生及其选修课程的情况。显示学生学号、姓名、课程号码、课程成绩。 一、等值与非等值连接查询 一、等值与非等值连接查询 二、自身连接 思考:如何用SQL语言表达同一个表而不产生歧义? 同名属性如何区分?应该显示哪些属性列? 二、自身连接 [例17]查询每一门课的间接先修课(即先修课的先修课)。 三、复合条件连接 复合条件连接:WHERE子句中含多个连接条件。 [例18]查询选修2号课程且成绩在90分以上的所有学生。 SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno = SC.Sno AND /* 连接谓词*/ SC.Cno= ‘2’ AND SC.Grade 90; 三、复合条件连接 [例19]查询每个学生的学号、姓名、选修的课程名及成绩 SELECT Student.Sno, Sname, Cname, Grade FROM Student, SC, Course /*多表连接*/ WHERE Student.Sno = SC.Sno and SC.Cno = Course.Cno; 四、外连接 四、外连接 四、外连接 外连接 -列出左右关系中所有元组 -FULL OUTER JOIN 或 FULL JOIN 左外连接 列出左边关系中所有的元组,左边没有的补NULL LEFT OUTER JOIN 或 LEFT JOIN 右外连接 列出右边关系中所有的元组,右边没有的补NULL RIGHT OUTER JOIN 或 RIGHT JOIN 四、外连接 四、外连接 思考:查询学生总人数。 SELECT COUNT(*) FROM Student; 思考:查询选修了课程的学生人数。 SELECT COUNT(DISTINCT Sno) FROM SC; 四、聚集函数 52 85 48 50 39 1 2 3 2 3 95001 95001 95001 95002 95002 成绩 Grade 课程号 Cno 学 号 Sno 五、GROUP BY子句 GROUP BY子句分组:细化聚集函数的作用对象 ?未对查询结果分组,聚集函数将作用于整个查询结果 ?对查询结果分组后,聚集函数将分别作用于每个组 ?作用对象是查询的中间结果表 ?按指定的一列或多列值分组,值相等的为一组 [例15]:求各个课程号及相应的选课人数。 SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;? 五、GROUP BY子句 首先对查询结果按Cno值分组,所有具有相同Cno值的元组归为一组,然后再对每一组使用Count统计。 特别注意: 分组子句中,select后的每个列要么是分组依据列(在Group BY后边的列),要么是聚集函数。 思考:查询选修了3门以上课程的学生学号。 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) 3; 五、GROUP BY子句 Having子句用于对分组后的结果再进行过滤。 HAVING短语与WHERE子句的区别在于作用对象不同: ?WHERE子句作用于基表中选择满足条件的元组; ?HAVING短语作用于分组中选择满足条件的组。 数据

文档评论(0)

1亿VIP精品文档

相关文档