数据库应用技术第5章 数据查询

上传人:ca****in 文档编号:232112116 上传时间:2023-09-13 格式:PPT 页数:46 大小:2.23MB
收藏 版权申诉 举报 下载
数据库应用技术第5章 数据查询_第1页
第1页 / 共46页
数据库应用技术第5章 数据查询_第2页
第2页 / 共46页
数据库应用技术第5章 数据查询_第3页
第3页 / 共46页
资源描述:

《数据库应用技术第5章 数据查询》由会员分享,可在线阅读,更多相关《数据库应用技术第5章 数据查询(46页珍藏版)》请在装配图网上搜索。

1、第第5 5章章 数据数据查询查询l l2023/9/132023/9/13l l1 1/46/46l l2023/9/132023/9/13l l2 2/46/46假若你作为假若你作为学生管理信息系统学生管理信息系统的程序开发的程序开发员,需要查询员,需要查询student数据库中的学生基本信息、数据库中的学生基本信息、考试课程、授课教师、考试分数等数据内容,那考试课程、授课教师、考试分数等数据内容,那么你如何操作实现呢?么你如何操作实现呢?本章教与学的建议:本章教与学的建议:教师使用教师使用4课时先讲后练,再归纳总结,学生在课时先讲后练,再归纳总结,学生在教师的指导下使用教师的指导下使用4课

2、时在课内练习课时在课内练习。本章目标是本章目标是使学生通过学习训练,能够按照需求及时地从相使学生通过学习训练,能够按照需求及时地从相关的数据表中查询出所需要数据关的数据表中查询出所需要数据。第第5章章 数据数据查询查询 l l2023/9/132023/9/13l l3 3/46/46第第5章章 数据数据查询查询本章学习任务本章学习任务q 查询语句查询语句 简单查询、简单查询、FROM子句与子句与INTO子句、子句、WHERE子句、子句、ORDER BY子句、子句、GROUP BY子句与子句与HAVING子句、子句、COMPUTE子句子句q 连接查询连接查询 连接概述、内连接、外连接、交叉连接

3、、自连连接概述、内连接、外连接、交叉连接、自连接接q 嵌套查询嵌套查询 单值嵌套查询、多值嵌套查询单值嵌套查询、多值嵌套查询q 联合查询联合查询l l2023/9/132023/9/13l l4 4/46/46q 所谓数据查询,就是对已经存在于数据库中的所谓数据查询,就是对已经存在于数据库中的数据按特定的组合、条件或次序进行检索。查询数据按特定的组合、条件或次序进行检索。查询功能是数据库最基本也是最重要的功能。功能是数据库最基本也是最重要的功能。q SELECT语句的形式:语句的形式:SELECT select_listINTO new_table_nameFROM table_listWHE

4、RE search_conditionsGROUP BY group_by_listHAVING search_conditionsORDER BY order_list ASC|DESCCOMPUTE row_aggregate(column_name)BY column_name数据查询数据查询l l2023/9/132023/9/13l l5 5/46/46SELECT ALL|DISTINCT*|table_name|view_name.*|column_name AS column_titleFROM table_name|view_name 其中:其中:DISTINCT将会丢弃将会

5、丢弃SELECT指定列的重复记录;指定列的重复记录;ALL保留结果表中所有的行;保留结果表中所有的行;*表示当前表或视图的所有列;表示当前表或视图的所有列;table_name.*|view_name.*表示指定表或视图的所有列;表示指定表或视图的所有列;column_name AScolumn_title表示可用表示可用column_name1AS column_title1,column_name2AS column_title2,.来更改指定列的标题,或者用来更改指定列的标题,或者用column_title1=column_name1,column_title2=column_name2

6、,.来更改指定列的标题来更改指定列的标题简单查询语句简单查询语句l l2023/9/132023/9/13l l6 6/46/46简单查询语句简单查询语句(示例示例5.1)l l2023/9/132023/9/13l l7 7/46/46简单查询语句简单查询语句(示例示例5.2)l l2023/9/132023/9/13l l8 8/46/46SELECT语句有五个子句提供选择,每一个子语句有五个子句提供选择,每一个子句有大量的选项、参数,而句有大量的选项、参数,而FROM是惟一必须的是惟一必须的子句。子句。SELECT column_name1,column_name2,.FROM tabl

7、e_name1,table_name2,.FROM子句指定子句指定SELECT语句查询的一个或多个表,语句查询的一个或多个表,最多可以指定最多可以指定16个表,每一个表名用逗号分隔。即从指个表,每一个表名用逗号分隔。即从指定的数据表定的数据表table_name1,table_name2,.的记录中,检索的记录中,检索(SELECT)出指定的列出指定的列column_name1,column_name2,.n形成结果集。不过,形成结果集。不过,FROM后面的表后面的表名在两个或者两个以上时,名在两个或者两个以上时,SELECT列表中应该采用列表中应该采用table_name.column_na

8、me形式限定列所属的表。形式限定列所属的表。FROM子句子句l l2023/9/132023/9/13l l9 9/46/46FROM子句子句(示例示例5.3)l l2023/9/132023/9/13l l1010/46/46使用使用SELECTSELECTINTO语句可以在查询语句可以在查询数据的基础上创建新的数据表。通常,可使用这数据的基础上创建新的数据表。通常,可使用这种方法来创建临时表,以便在随后的开发过程中种方法来创建临时表,以便在随后的开发过程中使用。使用。SELECT column_name1,column_name2,.nINTO new_table FROM table_n

9、ame其中,其中,new_table为新创建的表名称,它在当前为新创建的表名称,它在当前数据库中是不存在的。数据库中是不存在的。INTO子句子句l l2023/9/132023/9/13l l1111/46/46INTO子句子句(示例示例5.4)l l2023/9/132023/9/13l l1212/46/46一般查询都不是针对全表所有行的查询,只是从一般查询都不是针对全表所有行的查询,只是从整个表中选出满足指定条件的内容,这就要用到整个表中选出满足指定条件的内容,这就要用到WHERE子句。子句。SELECT column_name1,column_name2,.nFROM table_na

10、me WHERE search_condition根据根据WHERE子句的搜索条件表达式子句的搜索条件表达式(search_condition),从,从FROM子句指定的表中找子句指定的表中找出满足条件的记录,再按出满足条件的记录,再按SELECT中的目标列,选中的目标列,选出记录中的列值形成结果集。出记录中的列值形成结果集。WHERE子句子句l l2023/9/132023/9/13l l1313/46/46WHERE子句中常用的查询条件包括:子句中常用的查询条件包括:比较,比较包括的运算符主要有比较,比较包括的运算符主要有、=、=、等;等;q 确定范围,包括确定范围,包括BETWEEN A

11、 AND B与与NOT BETWEEN A AND B;q 确定集合,包括确定集合,包括IN、NOT IN等;等;q 字符匹配,包括字符匹配,包括LIKE、NOT LIKE;q 空值,包括空值,包括IS NULL、IS NOT NULL;q 查询结果,查询结果,包括包括EXISTS、NOT EXISTS;q 多重条件,主要有多重条件,主要有AND、OR、NOT等。等。WHERE子句子句l l2023/9/132023/9/13l l1414/46/46WHERE子句子句(示例示例5.5)l l2023/9/132023/9/13l l1515/46/46WHERE子句子句(示例示例5.6)l

12、l2023/9/132023/9/13l l1616/46/46WHERE子句子句(示例示例5.7)l l2023/9/132023/9/13l l1717/46/46WHERE子句子句(示例示例5.8)l l2023/9/132023/9/13l l1818/46/46SELECT column_name1,column_name2,.nFROM table_nameWHERE search_conditionORDER BY column_name1ASC|DESC,column_name2ASC|DESC,.ORDER BY是一个可选的子句,如果有是一个可选的子句,如果有ORDER BY

13、子句,将按照排序列名子句,将按照排序列名column_name1,column_name2,.进行排序,其结果表还要按选进行排序,其结果表还要按选项的值升序项的值升序(ASC)或降序或降序(DESC)排列。缺省时为排列。缺省时为查询结果按升序排列。查询结果按升序排列。ORDER BY子句子句l l2023/9/132023/9/13l l1919/46/46ORDER BY子句子句(示例示例5.9)l l2023/9/132023/9/13l l2020/46/46使用使用GROUP BY子句可以按一定的条件对查询到子句可以按一定的条件对查询到的结果进行分组,再对每一组数据计算统计信息。的结果

14、进行分组,再对每一组数据计算统计信息。SELECT column_name1,column_name2,.nFROM table_name WHERE search_conditionGROUP BY group_by_expressionHAVING search_conditionGROUP BY将查询结果按将查询结果按(group_by_expression)进行分组,该属性列相等的记录为一个组。通常,进行分组,该属性列相等的记录为一个组。通常,在每组中通过聚合函数来计算一个或者多个列。在每组中通过聚合函数来计算一个或者多个列。如果如果GROUP带有带有HAVING,则只有满足,则只有满

15、足search_condition的组才能输出。的组才能输出。GROUP BY与与HAVING子句子句l l2023/9/132023/9/13l l2121/46/46GROUP BY与与HAVING子句子句l l2023/9/132023/9/13l l2222/46/46GROUP BY与与HAVING子句子句l l2023/9/132023/9/13l l2323/46/46SELECT column_name1,column_name2,.nFROM table_name WHERE search_conditionORDER BY column_nameASC|DESC,.COMP

16、UTE row_aggregate(column_name),row_aggregate(column_name)BY column_name,column_name其中,其中,row_aggregate表示行聚合函数,如表示行聚合函数,如AVG(),COUNT(),MAX(),MIN(),SUM()。COMPUTE子句生成子句生成合计作为附加的汇总列出现在结果集的最后。合计作为附加的汇总列出现在结果集的最后。当与当与BY一起使用时,一起使用时,COMPUTE子句在结果集内对子句在结果集内对指定列进行分类汇总。指定列进行分类汇总。可在同一查询内指定可在同一查询内指定COMPUTE BY和和CO

17、MPUTE。COMPUTE子句子句l l2023/9/132023/9/13l l2424/46/46COMPUTE子句子句(示例示例5.12)l l2023/9/132023/9/13l l2525/46/46q在数据库应用中,经常需要从多个相关的表中在数据库应用中,经常需要从多个相关的表中查询数据,这就需要进行表连接。查询数据,这就需要进行表连接。q通过连接可以查询出存放在多个表中的不同表通过连接可以查询出存放在多个表中的不同表的数据的数据q通过连接可以为不同表构建新的数据表通过连接可以为不同表构建新的数据表q通过连接可以使用一个表中的数据来查询其他通过连接可以使用一个表中的数据来查询其他

18、表的数据表的数据连接查询概述连接查询概述l l2023/9/132023/9/13l l2626/46/46q在在WHERE子句中定义连接子句中定义连接SELECT table_name.column_name,table_name.column_name,.FROM table_name1,table_name2WHERE table_name1.column_name join_operator table_name2.column_name其中:其中:join_operator指指=,=,=,。q在在FROM子句中定义连接子句中定义连接SELECT table_name1.column_

19、name,table_name2.column_name,.FROM table_name1 join_type JOIN table_name2 ON join_conditionsWHERE search_condition其中:其中:join_type为连接类型:内连接、外连接、交叉连接。为连接类型:内连接、外连接、交叉连接。连接查询概述连接查询概述l l2023/9/132023/9/13l l2727/46/46连接查询概述连接查询概述(示例示例5.13)l l2023/9/132023/9/13l l2828/46/46连接查询概述连接查询概述(示例示例5.14)l l2023/9

20、/132023/9/13l l2929/46/46q内连接是用比较运算符比较两个表中列值,将内连接是用比较运算符比较两个表中列值,将两个表中满足连接条件的行组合起来作为结果,两个表中满足连接条件的行组合起来作为结果,它是最常见的表连接形式。它是最常见的表连接形式。q等值连接,在等值连接,在SELECT列表中使用星号列表中使用星号(*)的和的和在结果集中显示冗余列数据的连接。在结果集中显示冗余列数据的连接。q不等值连接,在连接条件中使用除等于运算符不等值连接,在连接条件中使用除等于运算符以外的其它比较运算符以外的其它比较运算符(、=、=、!、),来比较被连接列的列值。,来比较被连接列的列值。q自

21、然连接,对结果集的冗余列数据进行限制的自然连接,对结果集的冗余列数据进行限制的连接。在连接条件中使用等号连接。在连接条件中使用等号(=)运算符比较被连运算符比较被连接列的列值,但它使用选择列表指定查询结果聚接列的列值,但它使用选择列表指定查询结果聚合中所包括的列,并删除连接表中的重复列。合中所包括的列,并删除连接表中的重复列。内连接内连接l l2023/9/132023/9/13l l3030/46/46内连接内连接(示例示例5.15)l l2023/9/132023/9/13l l3131/46/46内连接内连接(示例示例5.16)l l2023/9/132023/9/13l l3232/4

22、6/46SELECT table_name1.column_name,table_name2.column_name,.FROM table_name1 LEFT|RIGHT|FULL OUTER JOIN table_name2ON join_conditions WHERE search_conditionq外连接会返回外连接会返回FROM子句中提到的至少一个表子句中提到的至少一个表中的所有行,只要这些行符合任何中的所有行,只要这些行符合任何WHERE或或HAVING搜索条件。搜索条件。q外连接分为左外连接、右外连接和全外连接。外连接分为左外连接、右外连接和全外连接。q左外连接对连接条件中

23、左边的表不加限制;左外连接对连接条件中左边的表不加限制;q右外连接对连接条件中右边的表不加限制;右外连接对连接条件中右边的表不加限制;q全外连接对两个表都不加限制,所有两个表中全外连接对两个表都不加限制,所有两个表中的行都会包括在结果集中。的行都会包括在结果集中。外连接外连接l l2023/9/132023/9/13l l3333/46/46外连接外连接(示例示例5.17)l l2023/9/132023/9/13l l3434/46/46外连接外连接(示例示例5.18)l l2023/9/132023/9/13l l3535/46/46外连接外连接(示例示例5.19)l l2023/9/13

24、2023/9/13l l3636/46/46q 使用关键字使用关键字CROSS包含一个以上的表的连接包含一个以上的表的连接称为交叉连接。称为交叉连接。q 交叉连接也叫非限制连接,它将两个表不加任交叉连接也叫非限制连接,它将两个表不加任何限制地组合起来。何限制地组合起来。q 交叉连接不使用交叉连接不使用WHERE子句,返回的结果集子句,返回的结果集包含所连接的表中所有行的全部组合。其数目为包含所连接的表中所有行的全部组合。其数目为第一个表中符合连接条件的行数与第二个表中符第一个表中符合连接条件的行数与第二个表中符合连接条件的行数的乘积。合连接条件的行数的乘积。交叉连接交叉连接l l2023/9/

25、132023/9/13l l3737/46/46q 数据表可以通过自连接实现自身与自身连接,数据表可以通过自连接实现自身与自身连接,例如一个表中的某一行与同一个表中的其它行进例如一个表中的某一行与同一个表中的其它行进行关联。行关联。q 自连接可以看作是一张表的两个副本之间进行自连接可以看作是一张表的两个副本之间进行的连接。的连接。SELECT aliat1.column_name1,aliat1.column_name2,.FROM table_name aliat1,table_name aliat2WHERE aliat1.column_name join_operator aliat2.

26、column_name在自连接中,主要用来查询同一个表中的数据信息,即同在自连接中,主要用来查询同一个表中的数据信息,即同一个表应给出不同的别名。一个表应给出不同的别名。自连接自连接l l2023/9/132023/9/13l l3838/46/46自连接自连接(示例示例5.20)l l2023/9/132023/9/13l l3939/46/46 将一个查询块将一个查询块(子查询子查询)嵌套在另一个查询块的嵌套在另一个查询块的条件子句中的查询被称为嵌套查询。条件子句中的查询被称为嵌套查询。子查询是一个嵌套在子查询是一个嵌套在SELECT、INSERT、UPDATE或或DELETE 语句或其他

27、子查询中的查询。语句或其他子查询中的查询。q单值嵌套查询单值嵌套查询子查询的返回结果是一个值的嵌套查询称为单值子查询的返回结果是一个值的嵌套查询称为单值嵌套查询。嵌套查询。q多值嵌套查询多值嵌套查询子查询的返回结果是一列值的嵌套查询称为多值子查询的返回结果是一列值的嵌套查询称为多值嵌套查询嵌套查询 嵌套查询嵌套查询l l2023/9/132023/9/13l l4040/46/46嵌套查询嵌套查询(示例示例5.21)l l2023/9/132023/9/13l l4141/46/46嵌套查询嵌套查询(示例示例5.22)l l2023/9/132023/9/13l l4242/46/46嵌套查询

28、嵌套查询(示例示例5.23)l l2023/9/132023/9/13l l4343/46/46q 使用使用UNION运算符可以将两个或多个运算符可以将两个或多个SELECT语句的结果组合成一个结果集。语句的结果组合成一个结果集。SELECT column_list INTO new_table_nameFROM clause WHERE clauseGROUP BY clauseHAVING clauseUNION ALLSELECT column_listFROM clause WHERE clauseGROUP BY clauseHAVING clause.ORDER BY clause

29、COMPUTE clause使用使用UNION运算符组合的结果集都必须具有相同的结构,运算符组合的结果集都必须具有相同的结构,它们的列数必须相同,并且相应的结果集列的数据类型它们的列数必须相同,并且相应的结果集列的数据类型必须兼容。必须兼容。联合查询联合查询l l2023/9/132023/9/13l l4444/46/46联合查询联合查询(示例示例5.24)l l2023/9/132023/9/13l l4545/46/46 实验目的实验目的 掌握掌握SELECT语句基本语法。语句基本语法。学会使用学会使用ORDER BY子句进行排序,使用子句进行排序,使用GROUP BY子句进行分组统计。

30、子句进行分组统计。学会数据汇总、连接查询、嵌套查询的方法。学会数据汇总、连接查询、嵌套查询的方法。实验准备实验准备 在服务器上创建用户数据库在服务器上创建用户数据库student;在用户数据库在用户数据库student中创建需要的数据表中创建需要的数据表;通过对象资源管理器或通过对象资源管理器或SQL编辑器向各个数编辑器向各个数据表输入实验数据据表输入实验数据。实验内容和步骤实验内容和步骤 具体实验内容和步骤参见教材的介绍。具体实验内容和步骤参见教材的介绍。本章实验本章实验l l2023/9/132023/9/13l l4646/46/46 本章介绍如何从数据库中查询所需要的数据,本章介绍如何

31、从数据库中查询所需要的数据,SELECT语句是从数据库中查询出满足条件的记语句是从数据库中查询出满足条件的记录。录。SELECT语句包含各种子句,其中:语句包含各种子句,其中:INTO子子句用于将查询结果存放在一个新的数据表中;句用于将查询结果存放在一个新的数据表中;FROM子句用于指定查询的数据来源;子句用于指定查询的数据来源;WHERE子句用于指定对记录的过滤条件;子句用于指定对记录的过滤条件;GROUP BY子子句的作用是对查询到的记录进行分组;句的作用是对查询到的记录进行分组;ORDER BY子句的作用是对查询到的记录进行排序;子句的作用是对查询到的记录进行排序;GROUP BY/HAVING子句可使用函数进行分组汇子句可使用函数进行分组汇总,还有连接查询总,还有连接查询(内连接、外连接、交叉连接内连接、外连接、交叉连接)、嵌套查询等。嵌套查询等。本章小结本章小结

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!