Transact-SQL语句的高级应用.ppt

Transact-SQL语句的高级应用.ppt

ID:51598084

大小:639.55 KB

页数:68页

时间:2020-03-25

Transact-SQL语句的高级应用.ppt_第1页
Transact-SQL语句的高级应用.ppt_第2页
Transact-SQL语句的高级应用.ppt_第3页
Transact-SQL语句的高级应用.ppt_第4页
Transact-SQL语句的高级应用.ppt_第5页
资源描述:

《Transact-SQL语句的高级应用.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SQLServer2005数据库应用与开发第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连接概述SQLServer处理连接时,查询引擎从多种可能的方法中选择最高效的方法处理连接。尽管不同连接的物理执行采用多种不同的优化,但是逻辑序列都应用下列子句实现:FROM子句中的连接条件。WHERE子句中的连接条件和搜索条件。HAVING子句中的搜索条件。6.1多表连接6.1.2内连接内连接(INNERJOIN)通过比较数据源表间共享列的值,从多个源表检索符合条件的行的操作。可以使用等号运算符的连接,也可以连接两个不相等的列中的值例6.1查询选修课程号为c05109的学生的学号、姓名和期末成绩。分析:本例中要求所输出的列分别在student表和score表

3、中,可以通过studentno列、使用内连接的方式连接两个表,找出选修课程号为c05109的行。程序中两个表存在相同的列,引用时需要标明该列所属的源表。6.1多表连接程序代码如下:SELECTstudent.studentno,sname,finalFROMstudentINNERJOINscoreONstudent.studentno=score.studentnoWHEREscore.courseno='c05109'程序执行结果如下:studentnosnamefinal---------------------------------0822111208韩吟秋91.000824

4、113307崔岩坚79.00……0935222201夏文斐92.000937221508平靖91.00(7行受影响)6.1多表连接6.1.2内连接例6.2查询选修课程号为c05103且平时成绩高于80分的学生的学号、姓名、平时成绩和期末成绩。分析:本例通过studentno列连接两个表,找出选修课程号为c05103的行。同时要求输出行中的平时成绩高80分,则可以使用不是用等号的比较运算符实现。关键词INNER也可以省略。程序代码如下:SELECTstudent.studentno,sname,usually,finalFROMstudentJOINscoreONstudent.stud

5、entno=score.studentnoandusually>80WHEREscore.courseno='c05103'程序执行结果如下:studentnosnameusuallyfinal------------------------------------0823210007宿致远82.0069.000824113307崔岩坚85.0077.000922210009许海冰87.0082.000922221324何影88.0062.00(4行受影响)6.1多表连接6.1.3外连接外部连接(outerjoin)包括满足搜索条件的连接表中的所有行,甚至包括在其他连接表中没有匹配行的

6、一个表中的行。(1)左外连接(leftouterjoin)。包括JOIN子句中左侧表中的所有行。右表中的行与左表中的行不匹配时,将为来自右表的所有结果集列赋以NULL值。6.1多表连接6.1.3外连接例6.3利用左外连接方式查询08级学生的学号、姓名、平时成绩和期末成绩。分析:左外连接方式将会对右表中的行与左表中的行不匹配时,将右表的所有结果集列赋以NULL值。程序代码如下:SELECTstudent.studentno,sname,usually,finalFROMstudentLEFTJOINscoreONstudent.studentno=score.studentnoWHERE

7、substring(student.studentno,1,2)='08'程序执行结果如下:studentnosnameusuallyfinal----------------------------------0822111208韩吟秋85.0091.000822111208韩吟秋89.0095.00……0824113307崔岩坚66.0082.000828261367赵毓NULLNULL(10行受影响)6.1多表连接6.1.3外连接(2)右

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。