7章高级查询.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7章高级查询ppt课件

学习目标: 通过本章学习,你能够学会: 1. 深入地讨论SELECT语句的其他扩展内容,加深对SQL Server语句基本的概念理解。 2. 学习表的别名,多表查询的内连接、外连接和交叉连接、使用UNION子句。 3. 重点学习统计函数、使用GROUP BY子句、使用HAVING子句 4. 区别COMPUTE和COMPUTE BY子用法、学习使用嵌套查询。 7.1 使用表的别名 当表的名称太长时,为了书写上的方便简单,在SQL语言的查询语句中可以定义表的别名。 [实例7.1] 在对“学生信息”表用t 作为表的别名。 操作步骤: 归纳分析: 表的别名定义命令格式: SELECT 表的别名.列名 FROM 表名 命令说明: (1) 在一个SELECT语句中,系统首先执行FROM子句,然后执行SELECT语句,所以一旦在FROM子句中定义了表的别名,尽管SELECT子句在FROM前面,也要使用别名。 (2)在一个定义了别名的SELECT语句中,从FROM子句向后是依次执行的。别名的作用范围仅限于本T-SQL语句中,而其他独立的T-SQL语句无权使用这个别名。 [实例7.2]请看一个典型的错误例子。 操作步骤: 归纳分析: 出现该错误的原因是FROM 语句已经定义了学生信息 的别名为t,SELECT 后的 “学生信息.学号”就是错 误的。而SELECT 后的“班 级”,将学生信息改为t, 则错误消失。 7.2多表查询 如果希望从多个表中获取查询结果,例如实例7.3,那么就需要在多个表中选择和操作数据,这正是SQL的特色之一。如果没有多表查询功能,就不得不将一个应用程序所需的所有数据集中在一个表中或是在多个表中保存相同的数据,这样就会违反关系型数据库设计的基本原则,而通过表的连接可以很轻易地从多个表中查询数据。 [实例7.3] 从“学生信息”表中获取学生的学号、姓名、班级,从“学生成绩”表中获取学生的期中成绩。 操作步骤: 归纳分析: 或许设计这个查询的目的是查询每个学生的学号、姓名、班级以及他们所对应的期末成绩。但结果却出乎意料地返回了352行数据,这显然错误。因为在“学生信息”表中共有22条记录,在“学生成绩”表中共有16条记录,两表中的记录组合个数为22*16=352,所以一共返回了352条记录,这种情况数学上称为笛卡尔乘积,也称为交叉连接,它是将两个表不加任何约束地组合起来。交叉连接后得到的结果集的行数是两个被连接表的行数的乘积。 使用交叉连接将产生过多的冗余数据,所以需要通过指定的列连接来避免笛卡尔积的出现。利用连接可以根据各个表之间的逻辑关系从两个或多个表中检索数据,通常使用的连接类型有内连接与外连接。 7.2.1 内连接 内连接(Inner Join)也叫自然连接,是指将另一个表内的行数据与本表内的数据相互连接,产生的结果行数取决于参加连接的行数,也就是说在将两个表中的指定列进行比较时,仅将两个表中满足连接条件的行组合起来作为结果集。在内连接中,只有在两个表中匹配的行才能在结果集中出现。 进行多表连接查询时,当两个或多个表中具有相同名称的列时,必须在要查询的列名前使用表名或表的别名作为前缀,并用“.”来分隔,这样将避免出现列名不明确的错误。 1.在WHERE子句中指定连接 [实例7.4] 查询“学生信息”表中全部学生的学号、姓名和在“学生成绩”表中的课程号和期末成绩。 操作步骤: 归纳分析: 从服务器返回的数据结果中,可以发现内连接的结果是从两个或两个以上的表集合中平等地挑选出符合条件的数据,并将无法满足连接条件的数据抛弃。如在学生成绩表中学号为10105的四条记录就没有出现在上述查询结果集中。 注意,如果所连接表的列中有空值,则这些空值不会互相匹配,因此不会出现在查询结果中。 在WHERE子句中可以使用比较运算符(=、、等)指定连接的条件。在两个表之间进行内连接的语法如下。 命令格式: SELECT 表.查询列名1,…… 表.查询列名n FROM 表1,表2 WHERE 表1.列名1=表2.列名1 命令说明: (1) 查询内容的列表前要有表名。 (2) 在FROM子句中指定查询数据的两个表表1与表2,表的顺序可以任意排列。 (3) 在WHERE子句中指定了连接的条件,当使用“=”连接时,通常也称为等值连接,它只显示第一个表和第二个表中满足连接条件的数值。 2.使用JOIN和ON关键字指字连接条件 在使用SELECT语句时,还可以使用JOIN和ON关键字建立连接条件。 [实例7.5]

文档评论(0)

118zhuanqian + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档