用sql语句完成下列查询:查询选修了课程的学生和学号
时间: 2023-12-31 10:06:00 浏览: 983
假设选修课程的学生信息存储在名为"选课表"(course_selection)的表中,该表中有学生学号(student_id)和选课信息(course_info)两个字段,其中选课信息包含课程编号和课程名称。
则可以使用如下SQL语句查询选修了课程的学生和学号:
```
SELECT DISTINCT student_id
FROM course_selection
WHERE course_info IS NOT NULL;
```
其中,`DISTINCT`关键字用于去除重复的学生学号,`IS NOT NULL`条件用于过滤掉未选修任何课程的学生。
相关问题
用sql语句完成下列查询:查询选修“计算机基础”课程的学生学号和成绩,井要求对查询结果按”成绩”的降序排列,如果成绩相同则按“学号”的升序排列:
假设选修“计算机基础”的课程ID为101,学生表为students,选课表为course。
可以使用以下SQL语句完成查询:
```
SELECT course.student_id, course.score
FROM course
WHERE course.course_id = 101
ORDER BY course.score DESC, course.student_id ASC;
```
解释一下:
首先,使用SELECT语句选择需要查询的字段:学生学号和成绩。
然后,使用FROM语句指定查询的表为course表。
接着,使用WHERE语句筛选选修“计算机基础”课程的记录,即course_id为101的记录。
最后,使用ORDER BY语句对查询结果进行排序,按照成绩降序排列,如果成绩相同则按学号升序排列。注意,排序的顺序需要与SELECT语句中选择的字段顺序一致。
用SQL语句完成下列查询: 1)基于基本表,查询选修了“数据结构”,但是没有选修“数据库原理”课程的学生的学号。 2)基于基本表,查询选修人数多于30人的课程编号和课程名称。 3)基于基本表,查询“数据库原理”这门课程的直接先修课的名称。 4)基于视图scs_view_8208210915,查询所有课程的课程编号、课程名称和平均成绩。
1)查询选修了“数据结构”,但是没有选修“数据库原理”课程的学生的学号:
```
SELECT Sno
FROM Score_8208210915
WHERE Cno = 2 AND Sno NOT IN (SELECT Sno FROM Score_8208210915 WHERE Cno = 1);
```
2)查询选修人数多于30人的课程编号和课程名称:
```
SELECT Cno, Cname
FROM Courses_8208210915
WHERE Cno IN (SELECT Cno FROM Score_8208210915 GROUP BY Cno HAVING COUNT(*) > 30);
```
3)查询“数据库原理”这门课程的直接先修课的名称:
```
SELECT Cname
FROM Courses_8208210915
WHERE Cno IN (SELECT PCno FROM Courses_8208210915 WHERE Cname = '数据库原理');
```
4)查询所有课程的课程编号、课程名称和平均成绩:
```
SELECT Cno, Cname, AVG(Score) AS AvgScore
FROM scs_view_8208210915
GROUP BY Cno, Cname;
```
阅读全文