问答题 使用SQL语句创建学生选课表,有如下限制和描述。
·学号:与学生表中学号保持数据类型一致,非空。
·课程号:与课程表中课程号保持数据类型一致,非空。
·成绩:为0~100之间的整数;
·该关系表主码为(学号,课程号):学号作为外码,参照关系学生表中的学号属性;课程号作为外码,参照关系课程表中的课程号属性。

【正确答案】CREATE TABLE学生选课(
学号CHAR(7) NOT NULL,
课程号INT NOT NULL,
成绩TINYINT CHECK(成绩>=0 AND 成绩<=100),
PRIMARY KEY(学号,课程号),
FOREIGN KEY(学号) REFERENCES学生(学号),
FOREIGN KEY(课程号) REFERENCES课程(课程号)
)
【答案解析】[解析] 对各列分析如下。
(1)学号:与学生表中学号保持一致,数据类型为char,长度为6,需要有非空约束。
(2)课程号:与课程表中课程号保持一致,数据类型为int,需要有非空约束。
(3)成绩:整型,取值在0~100之间,可使用tinyint型;要求取值范围为0~100,需要定义检查约束。
(4)主码:由于关系表主码为属性组,因此需要定义表级的主码约束,将学号和课程号定义为主码。
(5)外码:需要定义两个表级的外码约束。第1个外码约束规定学号为外码,被参照关系(父表)为学生关系,被参照属性为学号,它是被参照关系学生的主码;第二个外码约束规定课程号为外码,被参照关系为课程关系,被参照属性为课程号,它是被参照关系课程的主码。