2.查询计算机系的学生选修情况(学号、姓名、课程名、成绩)。(V_SCG) SQL
时间: 2024-12-06 17:26:38 浏览: 28
在SQL中,查询计算机系学生选修课程的情况通常涉及到从多个表联合查询,假设我们有三个表:`Students`(包含学生的个人信息),`Courses`(包含课程信息),以及`Enrollments`(包含学生选课记录)。这里是一个基本的SQL查询示例:
```sql
SELECT Students.SNo AS 学号,
S.Name AS 姓名,
Courses.CourseName AS 课程名,
Enrollments.Grade AS 成绩
FROM Students
JOIN Enrollments ON Students.SNo = Enrollments.StudentSNo
JOIN Courses ON Enrollments.CourseID = Courses.CourseID
WHERE Students.Department = '计算机系';
```
这个查询做了以下几件事:
1. 使用`JOIN`操作将`Students`, `Enrollments`, 和 `Courses` 这三个表连接起来,通过`SNo`(学生学号)和`StudentSNo`(学生在选课表中的关联学号)、`CourseID`(课程ID)字段进行关联。
2. `WHERE`子句限制了结果只包括计算机系的学生。
3. 选择需要显示的字段,即学号、姓名、课程名和成绩。
相关问题
一、用SQL语言创建一个名为School的数据库 1)所有数据文件存放于非C:盘的其它盘下以学生的学号姓名,命名的文件夹内。 2)数据库的属性如下: 主数据文件的大小为5MB,文件【按兆字节】的方式增长,一次增长2MB,最大容量20MB; 事务日志文件大小为4MB,文件【按百分比】的方式增长,一次增长25%,最大容量10MB; 二级数据文件,文件名为scg1dt1,文件大小1MB,【按兆字节】方式增长,增长量为1MB,最大容量10MB,存放于名为SCGroup1文件组中。 3)修改数据库: 修改主数据文件的大小为10MB,增长方式改为【按百分比】增长,一次增长20%; 为SCGroup1文件组增加一个名为scg1dt2的数据文件,其属性同scg1dt1; 2、管理数据库 使用sp_helpdb命令查看数据库School信息; 使用sp_helpfile命令查看主数据文件信息; 使用sp_helpfilegroup命令查看SCGroup1文件组信息; 二、在school数据库中创建如下三个新表: 1)学生表(Student) 属性名 含义 数据类型 约束 Sno 学号 Char(10) 主键(primary key) Sname 姓名 char(10) 非空 Ssex 性别 char(2) 非空;且只能取值‘男’、‘女’ Sage 年龄 int 大于等于10岁,小于等于45岁 Sdept 所在系 char(10) 数据如下: 学号 Sno 姓名 Sname 性别 Ssex 年龄 Sage 所在系 Sdept 200215121 李勇 男 20 CS 200215122 刘晨 女 19 CS 200215123 王敏 女 18 MA 200215125 张立 男 19 IS 2)课程表(Course) 属性名 含义 数据类型 约束 Cno 课程号 int 主键(primary key) Cname 课程名 char(10) 唯一、非空 Cpno 先修课程号 int 外键,参照Cno Ccredit 学分 int 1,2,3,4 数据如下:课程号 课程号 Cno 课程名 Cname 先行课 Cpno 学分 Ccredit 1 数据库 5 4 2 数学 2 3 信息系统 1 4 4 操作系统 6 3 5 数据结构 7 4 6 数据处理 2 7 PASCAL语言 6 4 8 DB_Design 1 4 3)学生选课表(SC) 属性名 含义 数据类型 约束 Sno 学号 Char(10) 外键,参照Student.Sno, Cno 课程号 int 外键,参照Course.Cno, Grade 成绩 int 大于等于0,小于等于100 注: 数据如下: 学号 Sno 课程号 Cno 成绩 Grade 200215121 1 92 200215121 2 85 200215121 3 88 200215122 2 90 200215122 3 80 200215123 3 200215125 4 1、管理数据表 1)查看Student表的信息。 2)在SC表中添加由(Sno,Cno)共同构成的主键(primary key)约束。 3)在Student表中添加一列 属性名 含义 数据类型 约束 Scity 籍贯 char(10) 4)为Course表增加计算列Cmoney“重修费”,其值为“学分*100” 记录上述操作的SQL语句和运行结果。 2、约束管理 1)在SC表中添加由(Sno,Cno)共同构成的主键(primary key)约束。 2)删除student表中的sno一列,查看运行结果是否有误,并分析原因如何解决。 3)为student表的“所在系”列添加默认值约束,默认值为‘CS’ 4)删除3)的默认值约束
As an AI language model, I do not have any personal belief or feelings. I am neutral and do not have emotions. "Null" is a term used in computer programming languages to represent a non-existent or non-valued state.
CREATE VIEW V_SCG AS SELECT Sno,Sname,Cname,Score,Credit from student,grade,course WHERE grade.Sno = student.Sno AND grade.Cno = course.Cno AND Cno = '0001'; 哪里错了
在这个 SQL 查询语句中,FROM 子句中的表 student、grade、course 没有使用 JOIN 操作符链接,而是使用了逗号分隔,这会导致查询结果出现笛卡尔积,即每个表中的每一行都与其他表中的每一行进行组合,从而导致查询结果出现重复数据。解决这个问题的方法是使用 JOIN 操作符来链接这些表,并在 ON 子句中指定连接条件。另外,查询中的 Cno = '0001' 应该指定表的别名,例如 course.Cno = '0001'。修改后的 SQL 查询语句如下所示:
```
CREATE VIEW V_SCG AS
SELECT Sno,Sname,Cname,Score,Credit
FROM student
JOIN grade ON student.Sno = grade.Sno
JOIN course ON grade.Cno = course.Cno
WHERE course.Cno = '0001';
```
阅读全文