-- 用SQL 语言定义学生表、课程表和选课表，要求完成以下完整性约束条件：
CREATE DATABASE new_学生管理;

USE new_学生管理;

-- （1）定义每个表的主码。
-- （2）定义参照完整性。
-- （3）定义课程的学分不超过4学分。
CREATE TABLE 学生表(
学号 VARCHAR(64),
性别 VARCHAR(3) CHECK(性别 IN('男','女')),  -- 参照完整性
PRIMARY KEY(学号) -- 定义主码
);

CREATE TABLE 课程表(
课程号 VARCHAR(64),
学分 SMALLINT CHECK(学分 <=4), --设置学分不超过四分
PRIMARY KEY(课程号) -- 定义主码
);

CREATE TABLE 选课表(
选课编号 VARCHAR(64),
学号 VARCHAR(64)
PRIMARY KEY(选课编号), -- 定义主码
FOREIGN KEY (学号) REFERENCES 学生表(学号)
)

-- （4）显示说明当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时，如何进行处理？
-- 实体完整性
INSERT INTO 学生表(学号)
VALUES
('1'),
('1');

-- 参照完整性
INSERT INTO 学生表(学号) VALUES('1');
INSERT INTO 选课表(选课编号,学号) VALUES
('1','2');

