建立“选课”表SC,包括学号sno,课程号cno,成绩grade,是否允许为空. 要求: sno+cno建立主键及与Student及Course表联接的外键
时间: 2024-10-14 13:14:00 浏览: 107
创建名为 "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,是否允许为空,数据类型如下图所示。要求sno+cno建立主键及与Student及Course表联接的外键
在数据库设计中,"选课"表(通常称为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` 字段,确保每次添加成绩时,课程号都存在。
创建SC1表 属性:Sno(学号) Cno(课程号) Grade(成绩) SC1 的约束: 主码:(sno,cno) ,主码名为 PK_SC l成绩(grade)只能在 0 – 100分之间 SC1的外码: 外码:SC1 表的sno 参照表 student1 的 sno 外码:SC1 表的Cno 参照表 course1 的 cno
可以使用以下 SQL 语句创建 SC1 表:
```
CREATE TABLE SC1 (
Sno CHAR(10),
Cno CHAR(10),
Grade INT,
PRIMARY KEY (Sno, Cno),
CONSTRAINT PK_SC PRIMARY KEY (Sno, Cno),
CONSTRAINT CHK_Grade CHECK (Grade >= 0 AND Grade <= 100),
CONSTRAINT FK_Sno FOREIGN KEY (Sno) REFERENCES student1 (sno),
CONSTRAINT FK_Cno FOREIGN KEY (Cno) REFERENCES course1 (cno)
);
```
解释如下:
- `Sno CHAR(10)`:学号属性,使用 CHAR 类型,长度为 10。
- `Cno CHAR(10)`:课程号属性,使用 CHAR 类型,长度为 10。
- `Grade INT`:成绩属性,使用 INT 类型。
- `PRIMARY KEY (Sno, Cno)`:设置 Sno 和 Cno 为主键。
- `CONSTRAINT PK_SC PRIMARY KEY (Sno, Cno)`:设置主键名称为 PK_SC。
- `CONSTRAINT CHK_Grade CHECK (Grade >= 0 AND Grade <= 100)`:设置成绩的取值范围为 0 到 100。
- `CONSTRAINT FK_Sno FOREIGN KEY (Sno) REFERENCES student1 (sno)`:设置 Sno 为外键,参照表为 student1 的 sno 属性。
- `CONSTRAINT FK_Cno FOREIGN KEY (Cno) REFERENCES course1 (cno)`:设置 Cno 为外键,参照表为 course1 的 cno 属性。
阅读全文