南通大学 数据库 实验四 嵌套查询
- 格式:doc
- 大小:67.05 KB
- 文档页数:3
实验四嵌套查询
班级:学号:姓名
一、实验目的:
掌握嵌套查询使我们可以用多个简单查询构成复杂的查询,从而增强SQL的查询能力。
二、实验内容
1、返回一个值的子查询
(1)查询与“李勇”同一个系的学生学号,姓名。
SELECT SNO,SNAME
FROM STUDENT
WHERE SDEPT IN
(SELECT SDEPT
FROM STUDENT
WHERE SNAME='李勇');
(2)查询与“张三”教师职称相同的教师号,姓名和职称。
SELECT TNO,TNAME,PROF
FROM TEACHER
WHERE PROF IN
(SELECT PROF
FROM TEACHER
WHERE TNAME='张三');
2、返回一组值的子查询
(1)使用ANY谓词查询选修1号课程的学生学号和姓名。
SELECT STUDENT.SNO,SNAME
FROM STUDENT
WHERE SNO=ANY
(SELECT STUDENT.SNO
FROM SC
WHERE SC.SNO=STUDENT.SNO AND CNO=1);
(2)使用IN谓词查询选修1号课程的学生学号和姓名。
SELECT STUDENT.SNO,SNAME
FROM STUDENT
WHERE SNO IN
(SELECT STUDENT.SNO
FROM SC
WHERE SC.SNO=STUDENT.SNO AND CNO=1);
( 3)使用ALL谓词查询其他系中比计算机系所有教师工资都高的教师的姓名、工资和所在系。
SELECT TNAME,SAL,TDEPT
FROM TEACHER
WHERE SAL>ALL
(SELECT SAL
FROM TEACHER
WHERE TDEPT='CS') 肯定是别的系的,所以不用排除sc
(3)使用EXISTS查询没有选修1号课程的学生学号和姓名。
SELECT STUDENT.SNO,SNAME
FROM STUDENT
WHERE NOT EXISTS
(SELECT*
FROM SC
WHERE SC.SNO=STUDENT.SNO AND CNO=1);
附:教师表Teacher(TNO,TNAME,TSEX,AGE,PROF,SAL,TDEPT)
心得体会:
1.Exists不返回任何数据,只产生逻辑值,所以select中用*即可
2.=ANY等价于IN ,<ANY等价于<MAX,<>ANY等价于NOT IN,<ALL等价于<MIN
3.查询中的值如果是字符串就要用单引号,如果是数字则不用
4.Exists查询中必须把所用到的表全部载入,并且where语句也要写完整,才能得到准确的结果。