利用T-SQL语句在JXGL数据库中实现其嵌套查询操作:(5)查询和“王洪敏”的“数据库原理及应用”课程分数相同的学生的学号。
时间: 2023-06-12 11:03:05 浏览: 94
假设学生信息存储在表 student 中,课程信息存储在表 course 中,成绩信息存储在表 score 中,可以使用以下 T-SQL 语句实现该嵌套查询操作:
```
SELECT s.sno
FROM student s, score sc, course c
WHERE s.sno = sc.sno
AND sc.cno = c.cno
AND c.cname = '数据库原理及应用'
AND sc.score = (SELECT score
FROM student s1, score sc1, course c1
WHERE s1.sno = sc1.sno
AND sc1.cno = c1.cno
AND c1.cname = '数据库原理及应用'
AND s1.sname = '王洪敏')
```
其中,外层的 SELECT 语句查询的是和王洪敏的成绩相同的学生的学号,使用了嵌套查询来获取王洪敏在该课程中的成绩。内层的 SELECT 语句查询的是王洪敏在该课程中的成绩。通过连接 student、score 和 course 表,可以实现查询和王洪敏的成绩相同的学生的学号。
相关问题
利用T-SQL语句在JXGL数据库中实现其嵌套查询操作: (1)查询选修了“离散数学”的学生的学号和姓名。 (2)查询课程号为C2的课程的成绩高于张林的学生的学号和成绩。 (3)查询其他系中年龄小于计算机科学系(CS)中年龄最大者的学生。 (4)查询其他系中比计算机科学系(CS)的学生年龄都小的学生。 (5)查询和“王洪敏”的“数据库原理及应用”课程分数相同的学生的学号。 (6)查询没有选修C2课程的学生的姓名。
1. 查询选修了“离散数学”的学生的学号和姓名。
```sql
SELECT 学号, 姓名
FROM 学生表
WHERE 学号 IN (
SELECT 学号
FROM 选课表
WHERE 课程名称 = '离散数学'
);
```
2. 查询课程号为C2的课程的成绩高于张林的学生的学号和成绩。
```sql
SELECT 学号, 成绩
FROM 成绩表
WHERE 课程号 = 'C2' AND 成绩 > (
SELECT 成绩
FROM 成绩表
WHERE 学号 = '张林' AND 课程号 = 'C2'
);
```
3. 查询其他系中年龄小于计算机科学系(CS)中年龄最大者的学生。
```sql
SELECT *
FROM 学生表
WHERE 年龄 < (
SELECT MAX(年龄)
FROM 学生表
WHERE 系别 = '计算机科学系'
) AND 系别 <> '计算机科学系';
```
4. 查询其他系中比计算机科学系(CS)的学生年龄都小的学生。
```sql
SELECT *
FROM 学生表
WHERE 年龄 < (
SELECT MIN(年龄)
FROM 学生表
WHERE 系别 = '计算机科学系'
) AND 系别 <> '计算机科学系';
```
5. 查询和“王洪敏”的“数据库原理及应用”课程分数相同的学生的学号。
```sql
SELECT 学号
FROM 成绩表
WHERE 课程名称 = '数据库原理及应用' AND 成绩 = (
SELECT 成绩
FROM 成绩表
WHERE 学号 = '王洪敏' AND 课程名称 = '数据库原理及应用'
);
```
6. 查询没有选修C2课程的学生的姓名。
```sql
SELECT 姓名
FROM 学生表
WHERE 学号 NOT IN (
SELECT 学号
FROM 选课表
WHERE 课程号 = 'C2'
);
```
组合查询和统计查询 利用T-SQL语句在JXGL数据库中实现其数据组合查询和统计查询操作: (1)查找选修“计算机基础”课程的学生成绩比此课程的平均成绩高的学生的学号和成绩。
组合查询:
```
SELECT a.学号, a.成绩
FROM 成绩表 a
WHERE a.课程号 = '001' AND a.成绩 > (
SELECT AVG(成绩)
FROM 成绩表
WHERE 课程号 = '001'
);
```
统计查询:
```
SELECT 学号, 成绩
FROM 成绩表
WHERE 课程号 = '001'
HAVING 成绩 > AVG(成绩);
```