创建Course1表 属性:Cno(课程号) Cname(课程名) Cpno(先修课号) Ccredit(学分) course 的约束: 主码:cno Ccredit 取值范围[ 1-6 ] Course表的外码Cpno ,参照表Course1的Cno
时间: 2023-06-27 10:05:37 浏览: 1286
可以使用以下 SQL 语句在关系型数据库中创建 Course1 表:
```sql
CREATE TABLE Course1 (
Cno CHAR(10) PRIMARY KEY,
Cname VARCHAR(50) NOT NULL,
Cpno CHAR(10),
Ccredit INT CHECK (Ccredit BETWEEN 1 AND 6),
FOREIGN KEY (Cpno) REFERENCES Course1(Cno)
);
```
上述 SQL 语句中,使用 `CREATE TABLE` 创建了一个名为 Course1 的表。其中:
- `Cno` 属性使用 `CHAR(10)` 类型,表示课程号,是主码。
- `Cname` 属性使用 `VARCHAR(50)` 类型,表示课程名,不能为空。
- `Cpno` 属性使用 `CHAR(10)` 类型,表示先修课号,可以为空。
- `Ccredit` 属性使用 `INT` 类型,表示学分,取值范围为 [1,6]。
- 使用 `CHECK` 约束对 `Ccredit` 进行取值范围限制。
- 使用 `FOREIGN KEY` 约束将 `Cpno` 作为外码,参照表为 Course1 的 `Cno`。这样就实现了 Cpno 先修于 Cno 的约束。
相关问题
1. 写出用Create Table创建表student1、course1、sc1 ,并按下列要求设置完整性约束。要求: (1)Student1表 属性:Sno(学号) Sname(姓名) Ssex(性别) Sage (年龄) Sdept(系部) student 的约束: 主码:sno Sname不可为空,且唯一 性别 不能为空且取值范围为{男,女} check (ssex in (‘男’,‘女’)) 年龄大于16岁 check (2) Course1表 属性:Cno(课程号) Cname(课程名) Cpno(先修课号) Ccredit(学分) course 的约束: 主码:cno Ccredit 取值范围[ 1-6 ] Course表的外码Cpno ,参照表Course的Cno (3) SC1表 属性:Sno(学号) Cno(课程号) Grade(成绩) SC1 的约束: 主码:(sno,cno) 成绩(grade)只能在 0 – 100分之间 check Sc1的外码: 外码:SC 表的sno 参照表 student 的 sno 外码:sc 表的Cno 参照表 course 的 cno
以下是用Create Table创建表student1、course1、sc1并设置完整性约束的SQL语句:
```sql
CREATE TABLE student1 (
Sno CHAR(10) PRIMARY KEY,
Sname VARCHAR(20) UNIQUE NOT NULL,
Ssex CHAR(2) NOT NULL CHECK (Ssex IN ('男', '女')),
Sage INT CHECK (Sage > 16),
Sdept VARCHAR(20) NOT NULL
);
CREATE TABLE course1 (
Cno CHAR(10) PRIMARY KEY,
Cname VARCHAR(20) NOT NULL,
Cpno CHAR(10),
Ccredit INT CHECK (Ccredit BETWEEN 1 AND 6),
FOREIGN KEY (Cpno) REFERENCES course1(Cno)
);
CREATE TABLE sc1 (
Sno CHAR(10),
Cno CHAR(10),
Grade INT CHECK (Grade BETWEEN 0 AND 100),
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES student1(Sno),
FOREIGN KEY (Cno) REFERENCES course1(Cno)
);
```
其中,student1表的约束见问题1的回答。course1表的主键为Cno,Cpno为先修课号,可以为空;Ccredit为学分,必须在1-6之间,是一个整数;Cpno是一个外键,参照表Course1的Cno。sc1表的主键为(Sno, Cno),表示学生选课情况,Grade为成绩,必须在0-100之间,是一个整数;Sno和Cno都是外键,分别参照表student1和course1的主键Sno和Cno。
1. 写出用Create Table创建表student1、course1、sc1 ,并按下列要求设置完整性约束。要求: (1)Student1表 属性:Sno(学号) Sname(姓名) Ssex(性别) Sage (年龄) Sdept(系部) student 的约束: 主码:sno Sname不可为空,且唯一 性别 不能为空且取值范围为{男,女} 年龄大于16岁 (2) Course1表 属性:Cno(课程号) Cname(课程名) Cpno(先修课号) Ccredit(学分) course 的约束: 主码:cno Ccredit 取值范围[ 1-6 ] Course表的外码Cpno ,参照表Course1的Cno (3) SC1表 属性:Sno(学号) Cno(课程号) Grade(成绩) SC1 的约束: 主码:(sno,cno) ,主码名为 PK_SC 成绩(grade)只能在 0 – 100分之间 Sc1的外码: 外码:SC1 表的sno 参照表 student1 的 sno 外码:SC1 表的Cno 参照表 course1 的 cno
创建表student1:
```sql
CREATE TABLE student1 (
Sno VARCHAR(10) PRIMARY KEY,
Sname VARCHAR(20) UNIQUE NOT NULL,
Ssex VARCHAR(2) NOT NULL CHECK (Ssex IN ('男', '女')),
Sage INT NOT NULL CHECK (Sage > 16),
Sdept VARCHAR(20)
);
```
创建表course1:
```sql
CREATE TABLE course1 (
Cno VARCHAR(10) PRIMARY KEY,
Cname VARCHAR(20),
Cpno VARCHAR(10) REFERENCES course1(Cno),
Ccredit INT CHECK (Ccredit >= 1 AND Ccredit <= 6)
);
```
创建表sc1:
```sql
CREATE TABLE sc1 (
Sno VARCHAR(10) REFERENCES student1(Sno),
Cno VARCHAR(10) REFERENCES course1(Cno),
Grade INT CHECK (Grade >= 0 AND Grade <= 100),
PRIMARY KEY (Sno, Cno) CONSTRAINT PK_SC
);
```