CREATE DATABASE zhouyikuan CHARACTER SET utf8mb4;
USE zhouyikuan;
CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
student_no VARCHAR(20) NOT NULL COMMENT '学号',
name VARCHAR(20) NOT NULL COMMENT '姓名',
gender CHAR(1) DEFAULT '男' COMMENT '性别',
age INT COMMENT '年龄',
id_card VARCHAR(18) NOT NULL COMMENT '身份证号',
class VARCHAR(30) COMMENT '班级',
enroll_date DATE DEFAULT CURRENT_DATE COMMENT '入学日期',
UNIQUE KEY uk_student_unique (student_no, id_card) COMMENT '学号和身份证联合唯一约束'
) COMMENT '学生信息表';
CREATE TABLE course (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '课程ID',
name VARCHAR(50) NOT NULL COMMENT '课程名称',
teacher VARCHAR(20) COMMENT '授课教师',
classroom VARCHAR(20) COMMENT '教室',
semester VARCHAR(20) COMMENT '学期'
) COMMENT '课程信息表';
CREATE TABLE score (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '成绩ID',
student_id INT NOT NULL COMMENT '学生ID',
course_id INT NOT NULL COMMENT '课程ID',
regular_score DECIMAL(5, 2) COMMENT '平时成绩',
exam_score DECIMAL(5, 2) COMMENT '考试成绩',
total_score DECIMAL(5, 2) COMMENT '总评成绩',
FOREIGN KEY (student_id) REFERENCES student(id) ON DELETE CASCADE,
FOREIGN KEY (course_id) REFERENCES course(id) ON DELETE CASCADE,
UNIQUE KEY uk_score_unique (student_id, course_id) COMMENT '学生和课程联合唯一约束'
) COMMENT '学生成绩表';
INSERT INTO student (student_no, name, gender, age, id_card, class, enroll_date) VALUES
('20230101', '张明', '男', 20, '110101200301011234', '计算机2101班', '2023-09-01'),
('20230102', '李华', '女', 19, '110101200401021235', '计算机2101班', '2023-09-01'),
('20230103', '王强', '男', 21, '110101200201031236', '计算机2102班', '2023-09-01'),
('20230104', '赵雪', '女', 20, '110101200302041237', '计算机2102班', '2023-09-01'),
('20230105', '刘芳', '女', 22, '110101200103051238', '计算机2103班', '2023-09-01');
INSERT INTO course (name, teacher, classroom, semester) VALUES
('数据库系统原理', '张教授', '逸夫楼A101', '2023-2024学年第一学期'),
('数据结构与算法', '李教授', '逸夫楼A201', '2023-2024学年第一学期'),
('操作系统', '王教授', '逸夫楼B101', '2023-2024学年第一学期'),
('计算机网络', '赵教授', '逸夫楼B201', '2023-2024学年第一学期'),
('软件工程', '刘教授', '逸夫楼C101', '2023-2024学年第一学期');
INSERT INTO score (student_id, course_id, regular_score, exam_score, total_score) VALUES
(1, 1, 85.50, 90.00, 88.50),
(1, 2, 78.00, 82.50, 80.00),
(1, 3, 92.00, 88.50, 90.00),
(2, 2, 88.00, 91.50, 90.00),
(2, 3, 76.50, 82.00, 80.00),
(2, 4, 90.00, 85.50, 87.00),
(3, 1, 82.00, 78.50, 80.00),
(3, 3, 91.00, 88.00, 89.00),
(3, 5, 85.50, 90.50, 88.00),
(4, 1, 90.00, 92.50, 91.50),
(4, 4, 87.00, 85.00, 86.00),
(4, 5, 78.50, 82.00, 80.50),
(5, 2, 85.00, 88.00, 87.00),
(5, 3, 92.00, 90.50, 91.00),
(5, 5, 88.50, 91.00, 90.00);
SELECT * FROM student;
SELECT * FROM course;
SELECT * FROM score;