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