sql server 查询)09

sql server 查询)09

ID:19593057

大小:778.50 KB

页数:30页

时间:2018-10-03

sql server 查询)09_第1页
sql server 查询)09_第2页
sql server 查询)09_第3页
sql server 查询)09_第4页
sql server 查询)09_第5页
资源描述:

《sql server 查询)09》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、目标掌握简单子查询的用法掌握IN子查询的用法掌握EXISTS子查询的用法应用T-SQL进行综合查询1什么是子查询3-1学员信息表问题:编写T-SQL语句,查看年龄比“李斯文”大的学员,要求显示这些学员的信息?分析:第一步:求出“李斯文”的年龄;第二步:利用WHERE语句,筛选年龄比“李斯文”大的学员;2什么是子查询3-2实现方法一:采用T-SQL变量实现DECLARE@ageINT--定义变量,存放李斯文的年龄SELECT@age=stuAgeFROMstuInfoWHEREstuName=‘李斯文’--求出李斯文的年龄-

2、-筛选比李斯文年龄大的学员SELECT*FROMstuInfoWHEREstuAge>@ageGO3什么是子查询3-3实现方法二:采用子查询实现SELECT*FROMstuInfoWHEREstuAge>(SELECTstuAgeFROMstuInfowherestuName='李斯文')GO子查询子查询在WHERE语句中的一般用法:SELECT…FROM表1WHERE字段1>(子查询)外面的查询称为父查询,括号中嵌入的查询称为子查询UPDATE、INSERT、DELETE一起使用,语法类似于SELECT语句将子查询和比较

3、运算符联合使用,必须保证子查询返回的值不能多于一个4使用子查询替换表连接3-1问题:查询笔试刚好通过(60分)的学员。学员信息表和成绩表5使用子查询替换表连接3-2实现方法一:采用表连接SELECTstuNameFROMstuInfoINNERJOINstuMarksONstuInfo.stuNo=stuMarks.stuNoWHEREwrittenExam=60GO内连接(等值连接)6使用子查询替换表连接3-3实现方法二:采用子查询SELECTstuNameFROMstuInfoWHEREstuNo=(SELECTstu

4、NoFROMstuMarksWHEREwrittenExam=60)GO子查询一般来说,表连接都可以用子查询替换,但有的子查询却不能用表连接替换子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据表连接更适合于查看多表的数据7IN子查询4-1问题:查询笔试刚好通过的学员名单。如何解决?8IN子查询4-2解决方法:采用IN子查询SELECTstuNameFROMstuInfoWHEREstuNoIN(SELECTstuNoFROMstuMarksWHEREwrittenExam=60)GO将=号改为ININ

5、后面的子查询可以返回多条记录常用IN替换等于(=)的比较子查询9IN子查询4-3问题:查询参加考试的学员名单学员信息表和成绩表(重抓本图)分析:判断一个学员是否参加考试其实很简单,只需要查看该学员对应的学号是否在考试成绩表stuMarks中出现即可10IN子查询4-4/*--采用IN子查询参加考试的学员名单--*/SELECTstuNameFROMstuInfoWHEREstuNoIN(SELECTstuNoFROMstuMarks)GO演示:使用IN子查询参考语句11NOTIN子查询问题:查询未参加考试的学员名单分析:加

6、上否定的NOT即可12EXISTS子查询4-1例如:数据库的存在检测IFEXISTS(SELECT*FROMsysDatabasesWHEREname=’stuDB’)DROPDATABASEstuDBCREATEDATABASEstuDB…….—建库代码略13EXISTS子查询4-2IFEXISTS(子查询)语句EXISTS子查询的语法:如果子查询的结果非空,即记录条数1条以上,则EXISTS(子查询)将返回真(true),否则返回假(false)EXISTS也可以作为WHERE语句的子查询,但一般都能用IN子查询替换1

7、4EXISTS子查询4-3问题:检查本次考试,本班如果有人笔试成绩达到80分以上,则每人提2分;否则,每人允许提5分分析:是否有人笔试成绩达到80分以上,可以采用EXISTS检测15EXISTS子查询4-4/*--采用EXISTS子查询,进行酌情加分--*/IFEXISTS(SELECT*FROMstuMarksWHEREwrittenExam>80)BEGINprint'本班有人笔试成绩高于80分,每人加2分,加分后的成绩为:'UPDATEstuMarksSETwrittenExam=writtenExam+2SELEC

8、T*FROMstumarksENDELSEBEGINprint'本班无人笔试成绩高于80分,每人可以加5分,加分后的成绩:'UPDATEstuMarksSETwrittenExam=writtenExam+5SELECT*FROMstumarksENDGO演示:使用EXISTS子查询参考语句16NOTE

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

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

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