数据库基础与实践技术第6章 数据操作语言.ppt

数据库基础与实践技术第6章 数据操作语言.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一些说明 WHERE子句用来筛选FROM子句中指定的数据源所产生的行数据。 GROUP BY子句用来对经WHERE子句筛选后的结果数据进行分组。 HAVING子句用来对分组后的统计结果再进行筛选。 */130 一些说明 可以在分组操作之前应用的筛选条件,在WHERE子句中指定更有效。 在HAVING子句中指定的筛选条件应该是那些必须在执行分组操作之后应用的筛选条件。 将所有应该在分组之前进行的筛选条件放在WHERE子句中而不是HAVING子句中。 */130 示例 例35. 查询计算机系和信息管理系每个系的学生人数。 SELECT Dept, COUNT(*) FROM Student GROUP BY Dept HAVING Dept in (计算机系, 信息管理系) SELECT Dept, COUNT (*) FROM Student WHERE Dept in ( 计算机系, 信息管理系) GROUP BY Dept √ X */130 示例 例36.查询每个系的男生人数。 SELECT Dept, COUNT(*) FROM Student WHERE Sex = 男 GROUP BY Dept 该查询语句不能写成: SELECT Dept, COUNT(*) FROM Student GROUP BY Dept HAVING Sex = 男 */130 6.1.3 多表连接查询 若一个查询同时涉及两个或两个以上的表,则称之为连接查询。 连接查询是关系数据库中最主要的查询,主要包括: 内连接 外连接:左外连接、右外连接 */130 内连接 是一种最常用的连接类型。使用内连接时,如果两个表的相关字段满足连接条件,则从这两个表中提取数据并组合成新的记录。 在非ANSI标准的实现中,连接操作是在WHERE子句中执行的——theta连接 在ANSI SQL-92中,连接是在JOIN子句中执行的——ANSI连接。 我们介绍ANSI方式的连接格式: FROM 表1 [INNER] JOIN 表2 ON 连接条件 */130 连接基础知识 连接查询中用于连接两个表的条件称为连接条件或连接谓词。 一般格式为: [表名1.][列名1]=[表名2.][列名2] 必须是可比列 */130 执行连接操作的大致过程 首先取表1中的第1个元组,然后从头开始扫描表2,逐一查找满足连接条件的元组, 找到后就将表1中的第1个元组与该元组拼接起来,形成结果表中的一个元组。 表2全部查找完毕后,再取表1中的第2个元组,然后再从头开始扫描表2, … 重复这个过程,直到表1中的全部元组都处理完毕为止。 */130 示例 SELECT * FROM Student INNER JOIN SC ON Student.Sno=SC.Sno */130 去掉重复列 SELECT Student.Sno, Sname, Sex, Sage, Dept, Cno, Grade FROM Student JOIN SC ON Student.Sno = SC.Sno */130 示例 例38. 查询计算机系学生的修课情况,要求列出学生的名字、所修课的课程号和成绩。 SELECT Sname, Cno, Grade FROM Student JOIN SC ON Student.Sno = SC.Sno WHERE Dept = 计算机系 */130 指定列别名 源表名 [ AS ] 表别名 为表指定别名可以简化表的书写。 SELECT Sname, Cno, Grade FROM Student S JOIN SC ON S.Sno = SC.Sno WHERE Dept = 计算机系 注意:当为表指定了别名时,在查询语句中的其他地方,所有用到表名的地方都要使用别名,而不能再使用原表名。 */130 示例 例39. 查询“信息管理系”修了“计算机文化学” 的学生姓名和成绩。 SELECT Sname, Grade FROM Student s JOIN SC ON s.Sno = SC. Sno JOIN Course c ON c.Cno = SC.Cno WHERE Dept = 信息管理系 AND Cname = 计算机文化学 */130 示例 例40. 查询所有选修了Java课程的学生情况,列出学生姓名和所在系。 SELECT Sname, Dept FROM Student S JOIN SC ON S.Sno = SC. Sno JOIN Course C ON C.Cno = SC.

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档