(8)查询选修“数据库原理”的学生学号,姓名。
时间: 2024-02-12 18:04:46 浏览: 177
可以使用内连接和 WHERE 子句来解决这个问题。以下是一种可能的 SQL 语句:
```
SELECT s.sno, s.sname
FROM student s, score sc, course c
WHERE s.sno = sc.sno AND sc.cno = c.cno AND c.cname = '数据库原理'
```
这个查询语句会从学生表、成绩表和课程表中进行内连接,找出选修了“数据库原理”的学生。其中,WHERE 子句过滤出课程名称是“数据库原理”的记录,并且使用 s.sno = sc.sno 和 sc.cno = c.cno 这两个条件将学生、成绩和课程联系起来。最终查询结果只包含学生学号和姓名。
相关问题
创建一个选修数据库原理课程的学生的学号姓名和专业的视图
创建一个名为“StudentCourses”的视图,用于显示选择数据库原理课程的学生的信息,包括学号、姓名和专业,可以使用SQL语句来实现。假设我们有两个表,一个是学生信息表(Students),另一个是课程选择表(CourseRegistrations)。视图的基本结构如下:
```sql
CREATE VIEW StudentCoursesView AS
SELECT Students.student_id AS StudentID,
Students.name AS StudentName,
Students.major AS Major
FROM Students
INNER JOIN CourseRegistrations ON Students.student_id = CourseRegistrations.student_id
WHERE CourseRegistrations.course_name = '数据库原理';
```
这个视图将关联两个表,通过`student_id`连接学生和他们注册的课程。然后筛选出课程名称为“数据库原理”的记录,只展示相关的学号、姓名和专业。
用连接查询查询没有选修’数据库原理’课程的学生的学号、姓名
好的,以下是查询语句:
```sql
SELECT student.stu_id, student.stu_name
FROM student
LEFT JOIN stu_course ON student.stu_id = stu_course.stu_id
WHERE stu_course.course_id <> 'C001' OR stu_course.course_id IS NULL;
```
解释一下这个查询语句:
首先我们需要查询出没有选修数据库原理课程的学生的学号和姓名,那么我们需要先找到所有选修了数据库原理课程的学生,然后再将这些学生排除在外。
这个查询语句中我们使用了 LEFT JOIN 进行表连接,连接条件是 stu_id 相等。然后我们使用 WHERE 子句过滤出没有选修数据库原理课程的学生,其中包含两种情况:
1. 学生没有选修任何课程,那么 stu_course 表中对应的记录会是 NULL;
2. 学生选修了其他课程,那么 stu_course 表中对应的记录会是其他课程的 ID。
因此,我们需要找到 stu_course.course_id 不等于 'C001' 或者是 NULL 的记录,其中 'C001' 表示数据库原理课程的 ID。
最后,我们查询出符合条件的学生的学号和姓名。
阅读全文