前言 暑假的时候学习过这个 MySql 数据库,然后学校这个学期居然开了这门课程,那就做一个学生成绩管理系统来练一练手吧。在这里做一个简单的练习记录。
需求分析 SQL 编写 新建数据库 为该数据库建表 INSERT INTO 数据 创建索引 创建视图 创建触发器 创建存储过程 SQL 查询进行调试 结语 完整代码如下
-- 1. 新建数据库 drop database studentManage; CREATE DATABASE studentManage; use studentManage; -- 2. 创建表 -- 创建班级表 CREATE TABLE classes ( class_id INT PRIMARY KEY, -- 班级ID,作为主键 class_name VARCHAR(50) -- 班级名称,最大长度为50个字符 ); -- 插入班级数据 INSERT INTO classes (class_id, class_name) VALUES (0, '尖子班'); INSERT INTO classes (class_id, class_name) VALUES (1, '垃圾班'); INSERT INTO classes (class_id, class_name) VALUES (2, '垃圾班'); INSERT INTO classes (class_id, class_name) VALUES (3, '废物班'); INSERT INTO classes (class_id, class_name) VALUES (4, '废物班'); INSERT INTO classes (class_id, class_name) VALUES (5, '脑残班'); -- 创建学生表 CREATE TABLE students ( student_id INT PRIMARY KEY NOT NULL, -- 学生ID,作为主键,不允许为空 name VARCHAR(50), -- 姓名,最大长度为50个字符 class_id INT, -- 班级ID age INT, -- 年龄 FOREIGN KEY (class_id) REFERENCES classes(class_id) -- 外键关联到班级表的班级ID ); -- 插入学生数据 INSERT INTO students (student_id, name, class_id, age) VALUES (1, '王八', 5, 19); INSERT INTO students (student_id, name, class_id, age) VALUES (2, '王一', 1, 20); INSERT INTO students (student_id, name, class_id, age) VALUES (3, '小六', 0, 18); INSERT INTO students (student_id, name, class_id, age) VALUES (4, '王五', 2, 19); INSERT INTO students (student_id, name, class_id, age) VALUES (5, '赵六', 3, 20); INSERT INTO students (student_id, name, class_id, age) VALUES (6, '小七', 4, 18); -- 创建教师表 CREATE TABLE teachers ( teacher_id INT PRIMARY KEY NOT NULL, -- 教师ID,作为主键,不允许为空 teacher_name VARCHAR(50) -- 教师姓名,最大长度为50个字符 ); -- 插入教师数据 INSERT INTO teachers (teacher_id, teacher_name) VALUES (1, '陈老师'); INSERT INTO teachers (teacher_id, teacher_name) VALUES (2, '杨老师'); INSERT INTO teachers (teacher_id, teacher_name) VALUES (4, '何老师'); INSERT INTO teachers (teacher_id, teacher_name) VALUES (4, '刘老师'); INSERT INTO teachers (teacher_id, teacher_name) VALUES (5, '陈老师'); INSERT INTO teachers (teacher_id, teacher_name) VALUES (6, '周老师'); -- 创建课程表 CREATE TABLE courses ( course_id INT PRIMARY KEY NOT NULL, -- 课程ID,作为主键,不允许为空 course_name VARCHAR(50), -- 课程名称,最大长度为50个字符 teacher_id INT, -- 教师ID FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id) -- 外键关联到教师表的教师ID ); -- 插入课程数据 INSERT INTO courses (course_id, course_name, teacher_id) VALUES (100, '英语', 1); INSERT INTO courses (course_id, course_name, teacher_id) VALUES (101, '语文', 2); INSERT INTO courses (course_id, course_name, teacher_id) VALUES (102, '数学', 3); INSERT INTO courses (course_id, course_name, teacher_id) VALUES (103, '生物', 4); INSERT INTO courses (course_id, course_name, teacher_id) VALUES (104, '物理', 5); INSERT INTO courses (course_id, course_name, teacher_id) VALUES (105, '化学', 6); -- 创建成绩表 CREATE TABLE scores ( student_id INT, -- 学生ID course_id INT, -- 课程ID score INT, -- 分数 FOREIGN KEY (student_id) REFERENCES students(student_id), -- 外键关联到学生表的学生ID FOREIGN KEY (course_id) REFERENCES courses(course_id) -- 外键关联到课程表的课程ID ); -- 插入成绩数据 INSERT INTO scores (student_id, course_id, score) VALUES (1, 1, 92); INSERT INTO scores (student_id, course_id, score) VALUES (2, 1, 8); INSERT INTO scores (student_id, course_id, score) VALUES (3, 1, 5); INSERT INTO scores (student_id, course_id, score) VALUES (4, 1, 0); INSERT INTO scores (student_id, course_id, score) VALUES (5, 1, 8); INSERT INTO scores (student_id, course_id, score) VALUES (6, 1, 7); INSERT INTO scores (student_id, course_id, score) VALUES (1, 2, 100); INSERT INTO scores (student_id, course_id, score) VALUES (2, 2, 8); INSERT INTO scores (student_id, course_id, score) VALUES (3, 2, 5); INSERT INTO scores (student_id, course_id, score) VALUES (4, 2, 2); INSERT INTO scores (student_id, course_id, score) VALUES (5, 2, 8); INSERT INTO scores (student_id, course_id, score) VALUES (6, 2, 7); INSERT INTO scores (student_id, course_id, score) VALUES (1, 1, 100); INSERT INTO scores (student_id, course_id, score) VALUES (2, 2, 1); INSERT INTO scores (student_id, course_id, score) VALUES (3, 3, 7); INSERT INTO scores (student_id, course_id, score) VALUES (4, 4, 10); INSERT INTO scores (student_id, course_id, score) VALUES (5, 5, 10); INSERT INTO scores (student_id, course_id, score) VALUES (6, 6, 60); INSERT INTO scores (student_id, course_id, score) VALUES (1, 1, 100); INSERT INTO scores (student_id, course_id, score) VALUES (2, 2, 22); INSERT INTO scores (student_id, course_id, score) VALUES (3, 3, 71); INSERT INTO scores (student_id, course_id, score) VALUES (4, 4, 20); INSERT INTO scores (student_id, course_id, score) VALUES (5, 5, 30); INSERT INTO scores (student_id, course_id, score) VALUES (6, 6, 40); INSERT INTO scores (student_id, course_id, score) VALUES (1, 1, 100); INSERT INTO scores (student_id, course_id, score) VALUES (2, 2, 14); INSERT INTO scores (student_id, course_id, score) VALUES (3, 3, 72); INSERT INTO scores (student_id, course_id, score) VALUES (4, 4, 11); INSERT INTO scores (student_id, course_id, score) VALUES (5, 5, 11); INSERT INTO scores (student_id, course_id, score) VALUES (6, 6, 62); INSERT INTO scores (student_id, course_id, score) VALUES (1, 1, 100); INSERT INTO scores (student_id, course_id, score) VALUES (2, 2, 12); INSERT INTO scores (student_id, course_id, score) VALUES (3, 3, 73); INSERT INTO scores (student_id, course_id, score) VALUES (4, 4, 14); INSERT INTO scores (student_id, course_id, score) VALUES (5, 5, 15); INSERT INTO scores (student_id, course_id, score) VALUES (6, 6, 66); -- 3.