实训七  连接查询与子查询
一、实训目的
1)掌握内连接的查询方法
2)掌握子查询的查询方法
二、实训内容
xscj数据库
1)查询出每个学生的学号、姓名课程名及成绩。
2)用连接查询在xsqk表中查询住同一寝室的学生,他们的相同。
3)用比较运算符引入子查询求103号课程不及格的学生信息。
4)查询与杨颖在同一个寝室的学生信息。
5)查询出生年份比杨颖大的学生信息。
对school数据库:(连接查询)
(1)查询出选修课程号为‘6-166’的的学生的学号,姓名,课程号,成绩。
(2)查询出‘李诚’教师所教授的课程名称。
(3)查询出男同学并且选修‘操作系统’的学生的学号,姓名,性别,课程号,课程名。
(4)查询出选修‘李诚’老师所讲授课程的学生的姓名,课程名,课程成绩,教师名。
对School数据库(子查询):
1. 查询与101号学生在同一班级的学生信息。输入姓名查询成绩在线
2. 查询比103号学生出生年份大的学生信息
3. 查询所选课程成绩的平均分比105号所选课程成绩的平均分高的学生信息。
4.  查询与李诚老师在同一系的教师的tname,depart。
三、实训步骤
  在查询分析器中分别输入下列命令,并执行,观察结果。
1查询出每个学生的学号、姓名、课程名及成绩。
SELECT  xsqk.学号,姓名,课程名,成绩
FROM  xsqk,kc,xs_kc
WHERE xsqk.学号=xs_kc.学号 AND xs_kc.课程号=kc.课程号
查询结果如图7-1所示:
图7-1 查询结果
2)用连接查询在xsqk表中查询住同一寝室的学生,他们的相同。
SELECT A.学号, A.姓名, A.
FROM xsqk A,xsqk B
WHERE xsqk.=xsqk. AND  A..学号<>B.学号
查询结果如图7-2所示:
图7-2查询结果
3)用比较运算符引入子查询求103号课程不及格的学生信息。
SELECT 学号,姓名,
FROM xsqk
WHERE 学号=ANY
  (SELECT  学号 FROM  xs_kc  WHERE  课程号=’103’  AND  成绩<60)
查询结果如图7-3所示:
图7-3 查询结果
4)查询与杨颖在同一个寝室的学生信息。
SELECT 学号,姓名,
FROM xsqk
WHERE =
  (SELECT FROM xsqk WHERE 姓名=’杨颖’)
查询结果如图7-4所示:
图7-4 查询结果
5)查询出生年份比杨颖大的学生信息。
SELECT 学号,姓名,出生日期
FROM xsqk
WHERE year(出生日期)>
  (SELECT year(出生日期) FROM xsqk WHERE 姓名=’杨颖’)
查询结果如图7-5所示: