如何实现 MySQL 学生表、课程表与选课表的设计

如果你是一名新手开发者,并想要实现一个简单的学生管理系统,其中包括学生表、课程表和选课表,本文将为你提供一份详细的指南。

流程概述

下面是整个过程的步骤:

步骤描述
1创建三个表:学生表、课程表和选课表。
2定义每个表的结构和关系。
3插入一些测试数据。
4执行查询操作以验证数据正确性。
1. 创建表

在 MySQL 中,我们需要创建三个表:studentscoursesenrollments

-- 创建学生表
CREATE TABLE students (
    student_id INT AUTO_INCREMENT PRIMARY KEY,  -- 学生ID,自增长
    name VARCHAR(100) NOT NULL,                -- 学生姓名
    age INT                                     -- 学生年龄
);

-- 创建课程表
CREATE TABLE courses (
    course_id INT AUTO_INCREMENT PRIMARY KEY,   -- 课程ID,自增长
    course_name VARCHAR(100) NOT NULL,         -- 课程名称
    credits INT                                  -- 学分
);

-- 创建选课表
CREATE TABLE enrollments (
    enrollment_id INT AUTO_INCREMENT PRIMARY KEY, -- 选课ID,自增长
    student_id INT,                                 -- 学生ID
    course_id INT,                                  -- 课程ID
    FOREIGN KEY (student_id) REFERENCES students(student_id),  -- 外键关联学生
    FOREIGN KEY (course_id) REFERENCES courses(course_id)    -- 外键关联课程
);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
2. 定义每个表的结构和关系

我们在创建表时已经定义了表的结构。在这里,enrollments 表是用来关联学生和课程的,它持有来自 studentscourses 表的外键,形成一对多关系。

3. 插入测试数据

接下来,我们需要为每个表插入一些测试数据。

-- 插入测试数据到学生表
INSERT INTO students (name, age) VALUES ('Alice', 20);
INSERT INTO students (name, age) VALUES ('Bob', 22);
INSERT INTO students (name, age) VALUES ('Charlie', 21);

-- 插入测试数据到课程表
INSERT INTO courses (course_name, credits) VALUES ('Mathematics', 3);
INSERT INTO courses (course_name, credits) VALUES ('Physics', 4);
INSERT INTO courses (course_name, credits) VALUES ('Chemistry', 3);

-- 插入测试数据到选课表
INSERT INTO enrollments (student_id, course_id) VALUES (1, 1);  -- Alice 选了 Mathematics
INSERT INTO enrollments (student_id, course_id) VALUES (1, 2);  -- Alice 选了 Physics
INSERT INTO enrollments (student_id, course_id) VALUES (2, 1);  -- Bob 选了 Mathematics
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
4. 执行查询操作

最后,我们可以执行一些查询操作,以验证数据是否正确。

-- 查询每个学生及其选的课程
SELECT s.name AS student_name, c.course_name AS course_name
FROM enrollments e
JOIN students s ON e.student_id = s.student_id
JOIN courses c ON e.course_id = c.course_id;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

这条查询将返回所有学生及其所选课程的名称。

关系图说明

为了更清晰地展示这些表之间的关系,下面是使用 Mermaid 语法绘制的 ER 图:

STUDENTS int student_id PK 学生ID string name 姓名 int age 年龄 COURSES int course_id PK 课程ID string course_name 课程名称 int credits 学分 ENROLLMENTS int enrollment_id PK 选课ID int student_id FK 学生ID int course_id FK 课程ID
结尾

以上就是创建简单的学生表、课程表和选课表的全过程。希望通过这篇文章,你能对 MySQL 的表结构、关系及基本的 SQL 操作有一个初步的了解。如果你有其他问题,请随时继续提问!