课件第5章数据查询.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《课件第5章数据查询.ppt》由会员分享,可在线阅读,更多相关《课件第5章数据查询.ppt(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LOGO本章学习目标:本章学习目标:v掌握掌握T-SQL作为查询语句的语法与应用作为查询语句的语法与应用v掌握掌握WHERE、ORDER BY、GROUP BY、HAVING子句的使用子句的使用v掌握基本的多表查询掌握基本的多表查询v掌握内连接、外连接、交叉连接和联合查掌握内连接、外连接、交叉连接和联合查询的使用询的使用v掌握多行和单值子查询的使用掌握多行和单值子查询的使用v掌握嵌套子查询的使用掌握嵌套子查询的使用5.1 工作场景导入工作场景导入 教务处工作人员小李在工作中经常需要教务处工作人员小李在工作中经常需要查询数据库中的数据。例如有如下查询需查询数据库中的数据。例如有如下查询需求:求:
2、v(1)查询学生表所有学生的学号、姓查询学生表所有学生的学号、姓名和所在院系。名和所在院系。v(2)查询所在院系为查询所在院系为“计算机科学计算机科学”的的学生学号、姓名、性别。学生学号、姓名、性别。v(3)查询年龄大于查询年龄大于19岁的学生信息。岁的学生信息。v(4)查询名字包含查询名字包含“孙孙”这个字的所有这个字的所有学生的信息。学生的信息。v(5)查询选修了查询选修了“1001”号课程的所号课程的所有学生的相关信息。有学生的相关信息。v(6)查询院系人数大于查询院系人数大于20的院系信息。的院系信息。v(7)查询不在信息工程学院上课的学查询不在信息工程学院上课的学生。生。v(8)查询
3、和查询和“张玲张玲”在一个系上课的学在一个系上课的学生姓名。生姓名。v(9)查询成绩低于该门课程平均成绩查询成绩低于该门课程平均成绩的学生编号、课程编号和成绩。的学生编号、课程编号和成绩。v(10)查询选修了查询选修了“2014056101”学生学生选修的所有课程的学生的信息。选修的所有课程的学生的信息。v 引导问题:引导问题:(1) 如何查询存储在数据库表中的记录?(2) 如何对原始记录进行分组统计?(3) 如何对来自多个表的数据进行查询?(4) 如何保留连接不成功的记录?(5) 如何动态设置选择记录的条件?5.2 查询工具的使用查询工具的使用vSQL Server 2016提供了功能完善、
4、提供了功能完善、操作简单的图形界面管理工具操作简单的图形界面管理工具“SQL Server Management Studio”(简简称称SSMS)。这个集成、统一的管理工具。这个集成、统一的管理工具组,是组,是 SQL Server 2016最重要的管最重要的管理工具,熟练的使用这些工具对于数据库理工具,熟练的使用这些工具对于数据库系统的开发与应用极为重要。系统的开发与应用极为重要。vSSMS中有两个主要工具:图形化的管理中有两个主要工具:图形化的管理工具(对象资源管理器)和工具(对象资源管理器)和Transaction SQL 编辑器(查询分析编辑器(查询分析器)。此外还拥有器)。此外还拥
5、有“解决方案资源管理器解决方案资源管理器”窗口、窗口、“模板资源管理器模板资源管理器”窗口和窗口和“注册服注册服务器务器”窗口等。本节主要介绍如何使用查窗口等。本节主要介绍如何使用查询分析器来编辑、执行命令。询分析器来编辑、执行命令。常用的工具栏按钮如图所示。5.3 关系代数关系代数vSQL Server 2016是一种关系数据库是一种关系数据库管理系统,是支持关系模型的数据库系统,管理系统,是支持关系模型的数据库系统,在关系数据库中,提供的是一种对二维表在关系数据库中,提供的是一种对二维表进行关系运算的机制。这种机制不仅包括进行关系运算的机制。这种机制不仅包括传统的集合运算中的并、交、差、广
6、义笛传统的集合运算中的并、交、差、广义笛卡尔积,还包括专门的关系运算中的选择、卡尔积,还包括专门的关系运算中的选择、投影和连接。投影和连接。5.3.1 选择选择(Selection)v选择是单目运算,它是按照一定的条件,选择是单目运算,它是按照一定的条件,从关系从关系R中选择出满足条件的行为作为结中选择出满足条件的行为作为结果返回。选择运算的操作对象是一张二维果返回。选择运算的操作对象是一张二维表,其运算结果也是一章二维表。选择运表,其运算结果也是一章二维表。选择运算的记号为算的记号为 F(R),其中,其中是选择运算是选择运算符,下标符,下标F是一个条件表达式,是一个条件表达式,R是被操是被操
7、作的表。作的表。v选择运算符的含义:选择运算符的含义:v在关系在关系R中选择满足给定条件的诸元组中选择满足给定条件的诸元组v F(R) = t|tRF(t)= 真真vF:选择条件,是一个逻辑表达式,基本:选择条件,是一个逻辑表达式,基本形式为:形式为:v ( X1Y1 ) ( X2Y2 )v:比较运算符(,:比较运算符(,或,或)vX1,Y1等是属性名、常量、简单函数;等是属性名、常量、简单函数;属性名也可以用它的序号来代替。属性名也可以用它的序号来代替。v例例: 设有一个学生设有一个学生-课程数据库,包括课程数据库,包括学生关系,查询学生关系,查询“计算机科学系计算机科学系”全体学生,全体学
8、生,已知计算机科学系的系部编号是已知计算机科学系的系部编号是01。v Sdept = 01 (学生学生)v或或 4 =01 (学生学生)学 号姓 名性 别系别编号出生日期2015036401李燕女011996-05-282015036402孙小维女011996-04-112015036403乔单单女011996-09-212015036404李铁梅女011996-01-105.3.2 投影投影(Projection)v投影也是单目运算,该运算从表中选出指投影也是单目运算,该运算从表中选出指定的属性值组成一个新表,记为:定的属性值组成一个新表,记为:A(R)。其中。其中A是属性名(即列名)表,是
9、属性名(即列名)表,R是表名。是表名。v投影运算符的含义投影运算符的含义v从从R中选择出若干属性列组成新的关系中选择出若干属性列组成新的关系v A(R) = tA | t R vA:R中的属性列中的属性列v投影操作主要是从列的角度进行运算,但投影操作主要是从列的角度进行运算,但投影之后不仅取消了原关系中的某些列,投影之后不仅取消了原关系中的某些列,而且为了避免重复行还可能取消某些元组。而且为了避免重复行还可能取消某些元组。v例例: 查询学生的姓名和出生日期查询学生的姓名和出生日期v 即求学生关系上即求学生关系上“姓名姓名”和和“出生日期出生日期”两个属性上的投影两个属性上的投影v 姓名,出生日
10、期姓名,出生日期(学生学生)v或或 2,5(学生学生)v结果如表所示:结果如表所示:姓名出生日期汪远东1995-05-01李春霞1994-04-06邓立新1996-07-20王小燕1995-09-215.3.3 连接连接(JOIN)v把两个表中的行按着给定的条件拼接而形把两个表中的行按着给定的条件拼接而形成的新表。成的新表。v连接也称为连接也称为连接连接v连接运算的含义:从两个关系的笛卡尔积连接运算的含义:从两个关系的笛卡尔积中选取属性间满足一定条件的元组中选取属性间满足一定条件的元组vA和和B:分别为:分别为R和和S上度数相等且可比的上度数相等且可比的属性组属性组v:比较运算符:比较运算符
11、v连接运算从连接运算从R和和S的广义笛卡尔积的广义笛卡尔积RS中选取(中选取(R关系)在关系)在A属性组上的值属性组上的值与(与(S关系)在关系)在B属性组上值满足比较关属性组上值满足比较关系的元组。系的元组。 v为为“”的连接运算称为等值连接的连接运算称为等值连接 5.3.3 连接连接(JOIN)v5.3.3 连接连接(JOIN) (2) -连接和相等连接-连接是写为 或 的二元算子,这里的 a 和 b 是属性名字, 是在集合 , 中的二元关系,v 是值常量,而 R 和 S 是关系。这个运算的结果由在 R 和 S 中满足关系 的元素的所有组合构成。只有 S 和 R 的表头是不相交的,即不包含
12、公共属性的情况下,-连接的结果才是有定义的。 。 R S=(R S) 在算子 是等号算子 (=) 的时候这个连接也叫相等连接。5.4 简单查询简单查询v查询功能就是实现从数据库中获得所需信查询功能就是实现从数据库中获得所需信息的要求,即利用查询语言对已经存在于息的要求,即利用查询语言对已经存在于数据库中的数据按照特定的组合、条件表数据库中的数据按照特定的组合、条件表达式或者一定次序进行检索。达式或者一定次序进行检索。T-SQL查查询就是通过最基本的询就是通过最基本的SELECT语句查询方语句查询方式,从表或视图中迅速、方便地检索数据。式,从表或视图中迅速、方便地检索数据。该功能非常强大、灵活。
13、它不仅能够以任该功能非常强大、灵活。它不仅能够以任意顺序、从任意数目的列中查询数据,还意顺序、从任意数目的列中查询数据,还可以在查询过程中进行计算,包含来自其可以在查询过程中进行计算,包含来自其他表的数据。他表的数据。5.4.1 数据查询语句数据查询语句(SELECT语句语句)v查询功能是查询功能是T-SQL的核心,通过的核心,通过T-SQL的的查询可以从表或视图中迅速、方便地检索查询可以从表或视图中迅速、方便地检索数据。数据。vT-SQL的查询最基本的方式是的查询最基本的方式是SELECT语语句,其功能十分强大。它能够以任意顺序、句,其功能十分强大。它能够以任意顺序、从任意数目的列中查询数据
14、,并在查询过从任意数目的列中查询数据,并在查询过程中进行计算,甚至能包含来自其他表的程中进行计算,甚至能包含来自其他表的数据。数据。v我们选取我们选取stuinfo数据库作为示例数据库,数据库作为示例数据库,以下例句均省略打开数据库的以下例句均省略打开数据库的USE stuinfo语句。语句。vstuinfo数据库有三张数据表:数据库有三张数据表:student、course和和sc。 v SELECT语句的完整语法格式为:语句的完整语法格式为:SELECT FROM |WHERE |GROUP BY HAVING ORDER BY ASC|DESCv 其中的其中的SELECT和和FROM语句
15、为必选子句,而语句为必选子句,而WHERE、ORDER BY和和GROUP BY子句为可选子句,要根据查询的需要子句为可选子句,要根据查询的需要去选用。去选用。v SELECT语法中各参数进行说明:语法中各参数进行说明: SELECT子句:用来指定由查询返回的列,并且各列在SELECT子句中的顺序决定了它们在结果表中的顺序; FROM子句:用来指定数据来源的表; WHERE子句:用来限定返回行的搜索条件; GROUP BY子句:用来指定查询结果的分组条件; ORDER BY子句:用来指定结果的排序方式。v SELECT语句可以写在一行中。但对于复杂的查询,语句可以写在一行中。但对于复杂的查询,
16、SELECT语语句随着查询子句的增加不断增长,一行很难写下,此时可以采用句随着查询子句的增加不断增长,一行很难写下,此时可以采用分行的写法,即每个子句分别在不同的行中。需要注意,子句与分行的写法,即每个子句分别在不同的行中。需要注意,子句与子句之间不能使用符号分隔。子句之间不能使用符号分隔。5.4.1 SELECT语句对列的查询语句对列的查询v对列的查询实质上是对关系的对列的查询实质上是对关系的“投影投影”操作。操作。在很多情况下,用户只对表中的一部分列在很多情况下,用户只对表中的一部分列感兴趣,可以使用感兴趣,可以使用SELECT子句来指明要子句来指明要查询的列,并可根据需要改变输出列显示查
17、询的列,并可根据需要改变输出列显示的先后顺序。的先后顺序。vT-SQL中对列的查询是通过对中对列的查询是通过对SELECT子子句中的列名选项进行设置完成的,具体格句中的列名选项进行设置完成的,具体格式为:式为:SELECT ALL|DISTINCT TOP n PERCENT *|表的名称表的名称.*|视图名称视图名称.* /*选择表或视图中的全部选择表或视图中的全部列列*/| 列的名称列的名称|列的表达式列的表达式 AS 列的别名列的别名 /*选择指定选择指定的列的列*/,n1. 查询一个表中的全部列查询一个表中的全部列v选择表的全部列时,可以使用星号选择表的全部列时,可以使用星号“*”来表
18、示所有的来表示所有的列。列。【例例】检索检索students表、表、course表和表和sc表中的所有表中的所有纪录。纪录。vT-SQL语句为:语句为:USE StuInfoSELECT * FROM studentSELECT * FROM courseSELECT * FROM scv也可以将三个表的操作合并为一条语句,使结果在一也可以将三个表的操作合并为一条语句,使结果在一个表中显示:个表中显示:SELECT student.*, course.*, sc.* FROM student, course, sc 2. 查询一个表中部分列查询一个表中部分列v若查询数据时要选择一个表中的部分列
19、信若查询数据时要选择一个表中的部分列信息,则在息,则在SELECT后给出需要的列即可,后给出需要的列即可,各列名之间逗号分隔。各列名之间逗号分隔。【例例】检索学生表中学生的部分信息,包括检索学生表中学生的部分信息,包括学号、学生姓名和性别。学号、学生姓名和性别。vT-SQL语句为:语句为:SELECT 学号,姓名,性别 FROM 学生3. 为列设置别名为列设置别名v 通常情况下,当从一个表中取出列值时,该值与列的名称是联系通常情况下,当从一个表中取出列值时,该值与列的名称是联系在一起的。如上例中从在一起的。如上例中从student表中取出学号与学生姓名,取出表中取出学号与学生姓名,取出的值就与
20、的值就与”学号学号“和和”姓名姓名“有联系。当希望查询结果中的列使用新有联系。当希望查询结果中的列使用新的名字来取代原来的列名称时,可以使用以下方法:的名字来取代原来的列名称时,可以使用以下方法: 列名之后使用AS关键字来更改查询结果中的列标题名。如学号 AS sno; 直接在列名后使用列的别名,列的别名可以带双引号、单引号或不带引号。【例例】检索学生表中学生的学号、姓名和出生日期,结果中各列的标检索学生表中学生的学号、姓名和出生日期,结果中各列的标题分别指定为学生编号、学生姓名和出生年月。题分别指定为学生编号、学生姓名和出生年月。v T-SQL语句为:语句为:SELECT 学号 as 学生编
21、号,姓名 学生姓名,出生日期出生年月 FROM 学生4. 计算列值计算列值v使用使用SELECT语句对列进行查询时,语句对列进行查询时,SELECT后可以跟列的表达式。也就是说,后可以跟列的表达式。也就是说,使用使用SELECT语句不仅可以查询原来表中语句不仅可以查询原来表中已有的列,还可以通过计算得到新的列。已有的列,还可以通过计算得到新的列。【例例】查询查询sc表中的学生成绩,并且显示折表中的学生成绩,并且显示折算后的分数。(折算方法:原始分数算后的分数。(折算方法:原始分数*0.7)v T-SQL语句为:语句为:SELECT 学号,课程号,成绩 AS 原始分数,成绩*0.7 AS 折算后
22、分数 FROM 选课5.4.2 SELECT语句对行的选择语句对行的选择v选择表中的若干记录就是关系代数中表的选择表中的若干记录就是关系代数中表的选择运算。这种运算可以通过增加一些谓选择运算。这种运算可以通过增加一些谓词词(例如例如WHERE子句子句)等来实现。等来实现。v在在SELECT语句中,语句中,WHERE子句必须紧子句必须紧跟在跟在FROM子句后,其基本格式为:子句后,其基本格式为: WHERE 1. 消除结果中的重复项消除结果中的重复项v在一张完整的关系数据库表中不可能出现两个完全在一张完整的关系数据库表中不可能出现两个完全相同的记录,但由于我们在查询时经常只涉及表的相同的记录,但
23、由于我们在查询时经常只涉及表的部分字段,这样,就有可能出现重复的行,可以使部分字段,这样,就有可能出现重复的行,可以使用用DISTINCT短语来避免这种情况。短语来避免这种情况。v关键字关键字DISTINCT的含义是对结果中的重复行只的含义是对结果中的重复行只选择一个,以保证行的唯一性。选择一个,以保证行的唯一性。【例】:从选课表中查询所有的参与选课的学生记录。T-SQL语句如下:SELECT DISTINCT 学号 FROM 选课2. 限制结果返回的行数限制结果返回的行数v一般情况下一般情况下SELECT语句返回的结果行数非常多,往语句返回的结果行数非常多,往往用户只需要返回满足条件的前几条
24、记录,则可以使往用户只需要返回满足条件的前几条记录,则可以使用用TOP n PERCENT可选子句。其中,可选子句。其中,n是一个是一个正整数,表示返回查询结果的前正整数,表示返回查询结果的前n行。如果使用了行。如果使用了PERCENT关键字,则表示返回结果的前关键字,则表示返回结果的前n%行。行。【例例】查询查询student表中前表中前10个学生的信息。个学生的信息。vT-SQL语句为:语句为:SELECT TOP 10 * FROM 学生执行结果如图执行结果如图4-8所示,只返回了所示,只返回了10个学生的学号。个学生的学号。【例】:查询学生表中的前10个学生的信息。T-SQL语句如下:
25、SELECT TOP 10 * FROM 学生3. 查询满足条件的元组查询满足条件的元组v条件查询是用的最多的一种查询方式,通过在条件查询是用的最多的一种查询方式,通过在WHERE子句中设置查询条件可以挑选符合要求的子句中设置查询条件可以挑选符合要求的数据、更新数据。条件查询的本质是对表中的数据数据、更新数据。条件查询的本质是对表中的数据进行筛选,即关系运算中的进行筛选,即关系运算中的“选择选择”操作。操作。v在在SELECT语句中,语句中,WHERE子句必须紧跟在子句必须紧跟在FROM子句之后,其基本格式如下:子句之后,其基本格式如下:vWHERE (1)使用比较运算符使用比较运算符v我们使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课件第5章 数据查询 课件 数据 查询
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内