第06章 Transact-SQL语句高级应用_第1页
第06章 Transact-SQL语句高级应用_第2页
第06章 Transact-SQL语句高级应用_第3页
第06章 Transact-SQL语句高级应用_第4页
第06章 Transact-SQL语句高级应用_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第06章Transact-SQL语句的高级应用程序节目,使用6.1多表连接6.2子查询6.3光标处理结果集6.4,用于大型对象类型数据管理6.5摘要,第06章Transact-SQL语句的高级应用程序节目,内容摘要1。Transact-SQL语句查询相关技术和高级应用节目2。连接和子查询之间的差异3。游标概念和应用程式节目4。您可以使用大型物件类型数据管理、6.1多重表格连接、6.1.1连接概述连接,根据表格之间的逻辑关系,使用表格中的资料选取其他表格中的列,连接条件可以在FROM或WHERE子句中指定。连接标准与WHERE和HAVING搜索标准结合使用,以控制从FROM子句引用的基表中选择的

2、行。6.1多表连接,6.1.1连接概述SQL服务器处理连接时,查询引擎从多种可能的方法中选择最有效的方法来处理连接。每个连接根据物理执行应用各种优化,但逻辑序列应用FROM子句中的连接条件子句。WHERE子句的连接标准和搜索标准。HAVING子句的搜索条件。6.1多表连接、6.1.2内部连接是比较数据源表之间的孔刘列值并从多个源表中检索有效行的操作。可以使用等号运算符,也可以连接两个不相等列中的值。例如,6.1可以查询选修科目编号为c05109的学生的学号、名字和期末成绩。分析:在牙齿示例中,需要输出的列分别来自student表和score表,通过studentno列和内部连接可以连接这两个表

3、,以找到选择科目编号为c05109的行。节目中的两个表具有相同的列,引用时必须标识该列所属的源表。6.1多表连接,节目代码如下:SELECT student.studentno,sname,Final from student inner join score on student . student no=score . student no学生no sname final -(受第7行影响),6.1多表连接,6.1.2内部连接,示例6.2选修科目编号c05103,平时成绩超过80分的学生的学号,名字,平时成绩,期末成绩祖怀。分析:牙齿示例通过studentno列连接两个表,以查找选择科目编

4、号为c05103的行。另外,如果输出行的平时成绩需要提高80分,可以使用不使用等号的比较运算符实现。也可以省略关键字INNER。节目代码为selectstudent.studentno、sname和usually。final from student join score on student . student no=score . student no and usually 80 where score . course no=c 05103,节目运行结果如下:student no sname usually final-00 82.00 09221324阴影88.00 62.00(第4

5、行受到影响)、6.1多表连接、6.1.3外部连接“外部连接”(outer join)包含连接表中符合搜索条件的所有行包含JOIN子句左侧表中的所有行。如果右表中的行与左表中的行不匹配,则右表中的所有结果集列都将分配NULL值。6.1多表连接,6.1.3外部连接,示例6.3使用左侧外部连接查看08级学生的学号、名字、平时成绩和期末成绩。分析:左侧外部连接在右侧表中的行与左侧表中的行不匹配时,将NULL值分配给右侧表中的所有结果集列。节目代码为selectstudent.studentno、sname和usually。final from student left join score on st

6、udent . student no=score . student no where substring(student . student no,1,节目执行结果如下:student no sname usually final-0 82.00 0828261367调优空(受第10行影响)、6.1多表连接、6.1.3外部连接(2)右侧外部连接在JOIN子句中,包含最右侧表中所有行的外部连接的一种类型。如果右侧表中的行与左侧表中的行不匹配,则将NULL值分配给结果集左侧表中的所有列。6.1多表连接,6.1.3外部连接,示例6.4使用右侧外部连接查询教师的徘徊情况。分析:右侧外部连接在左侧表中

7、的行与右侧表中的行不匹配时,将NULL值分配给左侧表中的所有结果集列。节目代码如下:select course no、tname、teacher.teacher no、major from teach _ class right join teacher on teach _ class节目的运行结果如下course no tname major teacher no - 23全女金融管理t08017 c08106韩惠娟货币学t08019(受第10行影响)、6.1多表连接、6.1.3外部连接(3)完全外部连接。要保留不匹配信息(包括连接结果中不匹配的行),请使用完整外部连接。SQL Serve

8、r提供完整的外部连接运算符FULL OUTER JOIN。牙齿运算符包含两个表中的所有行,而不管其他表中是否存在匹配的值。6.1多表连接,6.1.3外部连接,示例6.5使用整个外部连接查询教师的排水情况。分析:完整外部连接是右侧外部连接和左侧外部连接的并集。如果左侧表中的行或右侧表中的行不匹配,请在没有匹配值的所有结果集的列中指定NULL值。节目代码如下:select course no、tname、major、teacher . teacher no from teach _ class full join teacher on teach _ class节目的运行结果如下course no

9、 tname major teacher no-9 NULL NULL maefen经济管理t07019(受第11行影响)、6.1多表连接、6.1.4交叉连接(笛卡尔连接)交叉连接(Cross Join这种方式在实际过程中很少使用。6.1多表连接,6.1.4交叉连接,示例6.6显示了student表和score表的笛卡尔乘积。分析:student表10数据score表包含24行数据,结果集必须是240行数据。节目代码包括select student.studentno、sname和score.* from student cross join score。节目运行结果如下:student no

10、 sname student no course no usually final-1.00 082211208韩音秋天08211208 c 06108 89.00 95.00 0937221508平正093721508 c 08106 78.00 95但是,如果一个SELECT语句连接了10多个表,数据库很可能无法达到最佳设计,SQL Server 2005引擎的执行计划可能会非常麻烦。附注:对于三个或更多关联式表格的连线查询,通常遵循以下规则:为了避免笛卡尔乘积的出现,连接N个表至少需要n-1个连接条件。要缩小结果集,可以使用n-1个或多个连接条件,也可以使用其他条件。6.1多表格连接,6

11、.1.5连接多个表格。例如,6.7查询08级学生的学号、名字、课程名称、期末成绩和学分。分析:在牙齿示例中,输出必须位于三个表中:student、course和score,因此必须至少创建两个连接条件。节目代码为selectstudent.studentno、sname、cname和final。credit from score join student on student . student no=score . student no join course on score . course no=course . course no 2)=08,08student no sname c

12、name final credit-5 0824113307最暗犬数据结构87.00 4.0 0824113307最暗犬机器制图82.00 3.5(受第9行影响)、6.1多表格连接、6.1.5多表格连接、范例6 . 6每个表通过teach_class犹太表连接,因此您必须至少创建三个连接条件。节目代码为selectteacher.teacherno、tname、class.classno和cname。credit from teach _ class join teacher on teach _ class . teacher no=teacher . teacher no join cla

13、ss on teach _ class.ass . course no=course . course no where teacher . department=电脑大学,节目运行结果如下:teacher no tname class no cname credit-11海峰090502软件工程3.0 t05017卢明信090501数据结构4.0 (4行受影响)、6.1多表连接、6.1.6合并多个结果集UNION运算符将多个SELECT语句的返回结果合并为一个结果集包含合并查询中所有查询的所有行。以下是使用UNION合并两个查询结果集的基本规则:所有查询中的列数和列顺序必须相同。数据类型必须兼容。UNION运算符默认语法格式为select _ st

温馨提示

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

评论

0/150

提交评论