- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]34 数据查询
An Introduction to Database System 第三章 关系数据库标准语言SQL 第三章 关系数据库标准语言SQL 3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图 3.7 小结 3.4 数据查询 SQL语言的核心功能是查询! SQL提供了Select语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能. 基本形式由Select-From-Where查询块组成. Select查询语句的目标是从数据库中检索满足条件的记录。查询语句不会改变数据库中的数据,它只是检索数据。查询的结果仍是一个表。 3.4 数据查询 Select 语句的一般格式: SELECT [ALL | DISTINCT] 目标列表达式1 [,目标列表达式2] … FROM 表名或视图名 [,表名或视图名] [ WHERE 条件表达式 ] [ GROUP BY 列名1 [ HAVING 条件表达式 ] ] [ ORDER BY 列名2 [ ASC | DESC ] ]; 3.4 数据查询 整个Select语句的含义:根据Where子句的条件表达式,从From子句指定的基本表或视图中找出满足条件的元组,再按Select子句中的目标列表达式,选出元组中的属性值形成结果表。 如果有Group By子句,则将结果按列名1的值进行分组,该属性列值相等的元组为一个组。通常会在每组中使用聚合函数。如果Group By子句中带有Having短语,则只有满足指定条件的组才予以输出。 如果有Order By子句,则结果表还要按列名2的值进行升序或降序排序。 3.4 数据查询 Select语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。 以下章节我们按照P82建立的学生-课程数据库为例说明Select语句的各种用法。 3.4 数据查询 3.4 数据查询 3.4.1 单表查询(仅涉及一个表的查询) 3.4.2 连接查询 3.4.3 嵌套查询 3.4.4 集合查询 3.4.5 Select语句的一般形式 3.4.1单表查询 3.4.1 单表查询 3.4.1 单表查询 3.4.1 单表查询 3.4.1 单表查询 3.4.1 单表查询 3.4.1 单表查询 3.4.1 单表查询 3.4.1 单表查询 3.4 数据查询 3.4.1 单表查询 3.4.2 连接查询(查询涉及两个以上的表) 3.4.3 嵌套查询 3.4.4 集合查询 3.4.5 Select语句的一般形式 3.4.2 连接查询 连接查询:同时涉及多个表的查询 连接查询中,若引用了表1和表2的同名属性列时,都必须加上表名前缀;若引用的属性列名在两个表中是唯一的,则可以省略表名前缀。 连接查询的类型分为:内连接、外连接和交叉连接。 3.4.2 连接查询 3.4.2 连接查询 3.4.2 连接查询 3.4.2 连接查询 3.4.2 连接查询 3.4.2 连接查询 3.4.2 连接查询 Where子句后面有连接谓词,还有其他的限定条件。 查询条件由逻辑运算符等组合复杂逻辑表达式构成 例子:P103 例37、38 3.4.2 连接查询 交叉连接:是两个表中各个元组的交叉连接,相当于关系代数中的笛卡尔积。 交叉连接中,其中一个表中的每一记录都要与另一表中的每一记录相拼接,因此结果表往往很大。 交叉连接结果的记录行数=两个表记录行数的乘积; 交叉连接不带连接谓词。 3.4.2 连接查询 综合示例: 1 查询选修了C01号课程的学生的学号、姓名、成绩信息,要求按照成绩降序排列;【连接查询+排序】 2 查询全体学生的学号、姓名、课程号、选修的课程名称、成绩等信息,要求按照课程号升序排列,课程号相同时按学号降序排列。【连接查询+排序】 3.4 数据查询 3.4.1 单表查询 3.4.2 连接查询 3.4.3 嵌套查询 3.4.4 集合查询 3.4.5 Select语句的一般形式 3.4.3 嵌套查询 嵌套查询概述 一个SELECT-FROM-WHERE语句称为一个查询块 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询 SELECT Sname /*外层查询/父查询*/ FROM Student WHERE Sno IN (SELECT Sno /*内层查询/子查询*/ FROM SC
文档评论(0)