欢迎来到天天文库
浏览记录
ID:55797639
大小:761.50 KB
页数:33页
时间:2020-06-07
《SQl存储过程高级查询.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章高级查询回顾指出下列语句的错误:CREATETABLEbank(userNameVARCHAR(10),balanceMONEY)INSERTINTObank(cardNo,userName,balance)VALUES('张三',500)INSERTINTObank(cardNo,userName,balance)VALUES('李四',700)DECLAREmymoneyINT(4)mymoney=0SELECTmymoney=balanceFROMbank建表语句后必须添加GO标志DECLARE@mymoneyINTSET@mymoney=0WHEREus
2、erName='张三’2回顾IF@mymoney<100print'卡上目前余额不足100,请及时充值!'print'卡上余额为:'+@mymoneyprint'您的年利息为:'SELECT利息=CASEWHENbalance<100THENbalance*0.01WHENbalance>1000THENbalance*0.20WHENELSEbalance*0.10FROMbankWHEREuserName='张三‘GO多条语句添加BEGIN-END去掉WHEN缺少配对的END转换:convert(varchar(5),@mymoney)3目标掌握简单子查询的用法掌
3、握IN子查询的用法掌握EXISTS子查询的用法应用T-SQL进行综合查询4什么是子查询3-1学员信息表问题:编写T-SQL语句,查看年龄比“李斯文”大的学员,要求显示这些学员的信息?分析:第一步:求出“李斯文”的年龄;第二步:利用WHERE语句,筛选年龄比“李斯文”大的学员;5什么是子查询3-2实现方法一:采用T-SQL变量实现DECLARE@ageINT--定义变量,存放李斯文的年龄SELECT@age=stuAgeFROMstuInfoWHEREstuName=‘李斯文’--求出李斯文的年龄--筛选比李斯文年龄大的学员SELECT*FROMstuInfoWHERE
4、stuAge>@ageGO6什么是子查询3-3实现方法二:采用子查询实现SELECT*FROMstuInfoWHEREstuAge>(SELECTstuAgeFROMstuInfowherestuName='李斯文')GO子查询子查询在WHERE语句中的一般用法:SELECT…FROM表1WHERE字段1>(子查询)外面的查询称为父查询,括号中嵌入的查询称为子查询UPDATE、INSERT、DELETE一起使用,语法类似于SELECT语句将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个7使用子查询替换表连接3-1问题:查询笔试刚好通过(60分)的学员。
5、学员信息表和成绩表8使用子查询替换表连接3-2实现方法一:采用表连接SELECTstuNameFROMstuInfoINNERJOINstuMarksONstuInfo.stuNo=stuMarks.stuNoWHEREwrittenExam=60GO内连接(等值连接)9使用子查询替换表连接3-3实现方法二:采用子查询SELECTstuNameFROMstuInfoWHEREstuNo=(SELECTstuNoFROMstuMarksWHEREwrittenExam=60)GO子查询一般来说,表连接都可以用子查询替换,但有的子查询却不能用表连接替换子查询比较灵活、方便
6、,常作为增删改查的筛选条件,适合于操纵一个表的数据表连接更适合于查看多表的数据10IN子查询4-1问题:查询笔试刚好通过的学员名单。如何解决?11IN子查询4-2解决方法:采用IN子查询SELECTstuNameFROMstuInfoWHEREstuNoIN(SELECTstuNoFROMstuMarksWHEREwrittenExam=60)GO将=号改为ININ后面的子查询可以返回多条记录常用IN替换等于(=)的比较子查询12IN子查询4-3问题:查询参加考试的学员名单学员信息表和成绩表(重抓本图)分析:判断一个学员是否参加考试其实很简单,只需要查看该学员对应的学
7、号是否在考试成绩表stuMarks中出现即可13IN子查询4-4/*--采用IN子查询参加考试的学员名单--*/SELECTstuNameFROMstuInfoWHEREstuNoIN(SELECTstuNoFROMstuMarks)GO演示:使用IN子查询参考语句14NOTIN子查询问题:查询未参加考试的学员名单分析:加上否定的NOT即可15EXISTS子查询4-1例如:数据库的存在检测IFEXISTS(SELECT*FROMsysDatabasesWHEREname=’stuDB’)DROPDATABASEstuDBCREATEDATABASEs
此文档下载收益归作者所有