欢迎来到天天文库
浏览记录
ID:53263678
大小:87.50 KB
页数:7页
时间:2020-04-02
《实验六 嵌套查询.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验五一、实验名称:数据库嵌套查询二、实验目的1.掌握嵌套查询的表示及使用;2.掌握使用IN、比较符;3.掌握ANY或ALL;4.掌握EXISTS操作符进行嵌套查询操作。三、实验环境已安装SQLServer2005企业版的计算机;具有局域网环境,有固定IP;四、实验学时2学时五、实验要求1.了解连接查询的表示及使用;2.完成实验报告。实验内容及步骤:在WHERE子句中包含一个形如SELECT-FROM-WHERE的查询块,此查询块称为子查询或嵌套查询,包含子查询的语句称为父查询或外部查询。一、返回一个值的子查询当子查询的返回值只有一个时,可以使用比较运算符(=,>,<,>=,
2、<=,!=)将父查询和子查询连接起来。【例1】查询与李明教师职称相同的教师号、姓名。SELECTTNO,TNFROMTWHEREPROF=(SELECTPROFFROMTWHERETN='李明')二、返回一组值的子查询如果子查询的返回值不止一个,而是一个集合时,则不能直接使用比较运算符,可以在比较运算符和子查询之间插入ANY或ALL。1.使用ANY【例2】查询讲授课程号为C5的教师姓名。SELECTTNFROMT6WHERETNO=ANY(SELECTTNOFROMTCWHERECNO='C5')2.使用IN可以使用IN代替“=ANY”。【例3】查询讲授课程号为C5的教师姓名
3、SELECTTNFROMTWHERETNOIN(SELECTTNOFROMTCWHERECNO='C5')3.使用ALLALL的含义为全部。【例4】查询其他系中比电力系所有教师工资都高的教师的姓名和工资。SELECTTN,SALFROMTWHERESAL>ALL(SELECTSALFROMTWHEREDEPT='电力')ANDDEPT!=‘电力’4.使用EXISTSEXISTS表示存在量词,带有EXISTS的子查询不返回任何实际数据,它只得到逻辑值“真”或“假”。当子查询的的查询结果集合为非空时,外层的WHERE子句返回真值,否则返回假值。【例5】查询讲授课程号为C5的教师姓
4、名SELECTTNFROMTWHEREEXISTS(SELECT*FROMTCWHERETNO=T.TNOANDCNO='C5')6综合实例:【实例1】在数据库Student_test中完成以下查询:1.查询与’刘晨’在同一个系学习的学生的信息select*fromstudentwheresdeptin(selectsdeptfromstudentwheresname='刘晨')2.查询选修了课程名为’信息系统’的学生的学号和姓名selectno,snamefromstudentwheresnoin(selectsnofromscwherecnoin(selectcnofro
5、mcoursewherecname='信息系统'))3.查询选修了课程’1’和课程’2’的学生的学号selectsnofromstudentwheresnoin(selectsnofromscwherecno='1')andsnoin(selectsnofromscwherecno='2')4.查询比’刘晨’年龄小的所有学生的信息select*fromstudentwheresage<(selectsagefromstudentwheresname='刘晨')5.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄selectsname,sagefromstudentw
6、heresage'IS'6.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄selectsname,sage6fromstudentwheresage'IS'7.查询与计算机系(CS)系所有学生的年龄均不同的学生学号,姓名和年龄selectsno,sname,sagefromstudentwheresage<>all(selectsagefromstudentwh
7、eresdept='CS')8.查询与其他所有学生年龄均不同的学生学号,姓名和年龄selectsno,sname,sagefromstudentAwherenotexists(select*fromstudentBwhereA.sage=B.sageandA.sno<>B.sno)9.查询所有选修了1号课程的学生姓名selectsnamefromstudentwhereexists(select*fromscwheresno=student.snoandcno='1')10.查询没有选修了1号课程的学生
此文档下载收益归作者所有