设有关系S、SC、C如下: S(s no, s name, age, sex, s dept) C(c no, c name, teacher) SC(s no, c no, score) 用SQL完成下列功能: (1)创建学生表S和课程表C(要求标明主码) (2)创建选修课程情况表SC。(要求标明主码、外码及成绩的范围)
时间: 2023-06-04 10:04:12 浏览: 81
答案:
对于这个问题,我可以回答。以下是 SQL 语句完成上述功能:
-- 创建学生表S
CREATE TABLE S (
s_no CHAR(10) PRIMARY KEY,
s_name VARCHAR(20) NOT NULL,
age INT CHECK(age > 0),
sex CHAR(2) CHECK(sex IN ('男', '女')),
s_dept CHAR(20)
);
-- 创建课程表C
CREATE TABLE C (
c_no CHAR(10) PRIMARY KEY,
c_name VARCHAR(20) NOT NULL,
teacher VARCHAR(20) NOT NULL
);
-- 创建选修课程情况表SC
CREATE TABLE SC (
s_no CHAR(10) NOT NULL,
c_no CHAR(10) NOT NULL,
score INT CHECK(score BETWEEN 0 AND 100),
PRIMARY KEY (s_no, c_no),
FOREIGN KEY (s_no) REFERENCES S(s_no),
FOREIGN KEY (c_no) REFERENCES C(c_no)
);
注意,在数据库设计中,每个表要指定主键,主键是用于唯一标识表中每一行记录的字段。同时,需要使用外键来实现表间的关系,表间的关系可以通过外键来建立。本题中,选修课程情况表 SC 中的主键是 s_no 和 c_no,同时 s_no 和 c_no 两个字段都是外键,引用了学生表 S 和课程表 C 中的主键。成绩的范围在这里用 CHECK 约束来实现。