建立“选课”表SC,包括学号sno,课程号cno,成绩grade,是否允许为空,数据类型如下图所示。要求sno+cno建立主键及与Student及Course表联接的外键
时间: 2024-10-14 09:13:59 浏览: 89
在数据库设计中,"选课"表(通常称为SC,代表Schedule of Classes)是用来存储学生选择课程的信息。按照您的描述,我们可以创建一个这样的表,结构如下:
```sql
CREATE TABLE SC (
sno VARCHAR(10) PRIMARY KEY, -- 学号,可以允许为空,但通常需要唯一,设为主键
cno VARCHAR(10) NOT NULL, -- 课程号,不允许为空,作为外键关联到Course表
grade DECIMAL(4,2), -- 成绩,默认可以为空,小数点后两位
FOREIGN KEY (cno) REFERENCES Course(cno) -- 这里cno引用Course表的cno字段,表示外键约束
);
```
在这个表中:
- `sno` 列代表学生的学号,通常是字符串类型,并设置为主键,以保证每个学生有唯一的标识;
- `cno` 列代表课程的编号,也需要字符串类型,但是这里设定为NOT NULL,因为课程号应该是非空的;
- `grade` 列用于存储成绩,是十进制类型,保留两位小数;
- 使用 `FOREIGN KEY` 约束将 `cno` 引用 `Course` 表的 `cno` 字段,确保每次添加成绩时,课程号都存在。
相关问题
建立“选课”表SC,包括学号sno,课程号cno,成绩grade,是否允许为空. 要求: sno+cno建立主键及与Student及Course表联接的外键
创建名为 "SC" 的表,用于存储学生选课信息,可以使用 SQL 语句来描述其结构。这里是一个基本的示例:
```sql
CREATE TABLE SC (
sno VARCHAR(10) NOT NULL, -- 学号,作为主键
cno VARCHAR(10) NOT NULL, -- 课程号,作为主键
grade DECIMAL(3,1) DEFAULT NULL, -- 成绩,默认允许为空
PRIMARY KEY (sno, cno), -- sno 和 cno 组成复合主键
FOREIGN KEY (sno) REFERENCES Student(sno), -- 与 Student 表的关联
FOREIGN KEY (cno) REFERENCES Course(cno) -- 与 Course 表的关联
);
```
在这个例子中:
- `sno` 和 `cno` 都是不允许为空 (`NOT NULL`) 的字段,它们一起构成复合主键。
- `grade` 字段允许空值 (`DECIMAL(3,1) DEFAULT NULL`),表示成绩可能是空的。
- 使用 `FOREIGN KEY` 约束将 `sno` 和 `cno` 与 `Student` 和 `Course` 表的相应字段关联起来,作为外键。
表SC 列名有Sno作学号 Cno作选课课程号 Grade作成绩 查询选修课程数大于等于2的学生的学号、平均成绩和选课门 数,并按平 均成绩降序排列SQL查询
以下是你所需的 SQL 查询:
```
SELECT Sno, AVG(Grade) AS AvgGrade, COUNT(DISTINCT Cno) AS CourseCount
FROM SC
GROUP BY Sno
HAVING COUNT(DISTINCT Cno) >= 2
ORDER BY AvgGrade DESC;
```
这个查询首先从 SC 表中选出学号(Sno)、成绩(Grade)和课程号(Cno)列。然后,它按照学号进行分组,并计算平均成绩和选课门数。最后,筛选出选修课程数大于等于2的学生,并按照平均成绩降序排列输出结果。
阅读全文