学生成绩管理系统

SQLBeginner
立即练习

介绍

在这个项目中,你将学习如何使用 MySQL 创建一个学生信息管理系统。这个系统包括两个表:student_infostudent_score,它们之间存在外键关系。

👀 预览

MySQL [studentSys]> DESC student_info;
+-------+-------------+------+-----+---------+----------------+
| 字段 | 类型        | 是否为空 | 键   | 默认值  | 额外信息       |
+-------+-------------+------+-----+---------+----------------+
| Id    | int         | 否   | 主键 | NULL    | 自动递增       |
| name  | varchar(10) | 是   |      | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 行记录已选中 (0.002 秒)

MySQL [studentSys]> DESC student_score;
+-------+------------+------+-----+---------+-------+
| 字段 | 类型       | 是否为空 | 键   | 默认值  | 额外信息 |
+-------+------------+------+-----+---------+-------+
| Id    | int        | 否   | 主键 | NULL    |       |
| score | varchar(4) | 是   |      | NULL    |       |
| Sid   | int        | 是   | 索引 | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 行记录已选中 (0.001 秒)

🎯 任务

在这个项目中,你将学习:

  • 如何启动 MySQL 服务器并登录到 MySQL 终端
  • 如何使用 SQL 语句创建数据库和表
  • 如何在两个表之间建立外键关系

🏆 成果

完成这个项目后,你将能够:

  • 理解关系型数据库的概念以及如何创建和管理表
  • 实现外键约束以确保相关表之间的数据完整性
  • 应用你对 SQL 的知识来构建一个简单的学生信息管理系统

启动 MySQL 并创建数据库

在这一步中,你将学习如何启动 MySQL 服务器并创建 studentSys 数据库。

  1. 启动 MySQL 服务器:

    sudo /etc/init.d/mysql start
    
  2. 登录到 MySQL 终端:

    mysql -uroot
    
  3. /home/labex/project 目录中创建一个名为 studentSys.sql 的新文件。

  4. studentSys.sql 文件中,创建 studentSys 数据库:

    DROP DATABASE IF EXISTS studentSys;
    CREATE DATABASE IF NOT EXISTS studentSys CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    

    DROP DATABASE IF EXISTS 语句检查 studentSys 数据库是否已经存在,如果存在,则删除它。然后,CREATE DATABASE IF NOT EXISTS 语句使用指定的字符集和排序规则创建 studentSys 数据库。

创建 student_info 表

在这一步中,你将学习如何创建 student_info 表。

  1. studentSys.sql 文件中,使用 studentSys 数据库:

    USE studentSys;
    
  2. 创建 student_info 表:

    DROP TABLE IF EXISTS student_info;
    CREATE TABLE student_info (
        Id INT NOT NULL AUTO_INCREMENT,
        name VARCHAR(10),
        PRIMARY KEY (Id)
    );
    

    DROP TABLE IF EXISTS 语句检查 student_info 表是否已经存在,如果存在,则删除它。然后,CREATE TABLE 语句创建一个包含两列的 student_info 表:IdnameId 列被设置为主键并设置为自动递增。

创建 student_score 表并建立外键关系

在这一步中,你将学习如何创建 student_score 表,并在 student_score 表和 student_info 表之间建立外键关系。

  1. studentSys.sql 文件中,创建 student_score 表:

    DROP TABLE IF EXISTS student_score;
    CREATE TABLE student_score (
        Id INT NOT NULL,
        score VARCHAR(4),
        Sid INT,
        PRIMARY KEY (Id),
        FOREIGN KEY (Sid) REFERENCES student_info(Id)
    );
    

    DROP TABLE IF EXISTS 语句检查 student_score 表是否已经存在,如果存在,则删除它。然后,CREATE TABLE 语句创建一个包含三列的 student_score 表:IdscoreSid

    PRIMARY KEY (Id) 语句将 Id 列设置为 student_score 表的主键。

    FOREIGN KEY (Sid) REFERENCES student_info(Id) 语句在 student_score 表的 Sid 列和 student_info 表的 Id 列之间建立外键关系。这意味着 student_score 表的 Sid 列中的值必须与 student_info 表的 Id 列中的值匹配。

  2. 在 MySQL 提示符下,运行以下命令来执行 studentSys.sql 脚本:

SOURCE ~/project/studentSys.sql

完成这些步骤后,你已经创建了 studentSys 数据库、student_info 表和 student_score 表,并在两个表之间建立了外键关系。

MySQL [studentSys]> DESC student_info;
+-------+-------------+------+-----+---------+----------------+
| 字段 | 类型        | 是否为空 | 键   | 默认值  | 额外信息       |
+-------+-------------+------+-----+---------+----------------+
| Id    | int         | 否   | 主键 | NULL    | 自动递增       |
| name  | varchar(10) | 是   |      | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 行记录已选中 (0.002 秒)

MySQL [studentSys]> DESC student_score;
+-------+------------+------+-----+---------+-------+
| 字段 | 类型       | 是否为空 | 键   | 默认值  | 额外信息 |
+-------+------------+------+-----+---------+-------+
| Id    | int        | 否   | 主键 | NULL    |       |
| score | varchar(4) | 是   |      | NULL    |       |
| Sid   | int        | 是   | 索引 | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 行记录已选中 (0.001 秒)

总结

恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。

✨ 查看解决方案并练习✨ 查看解决方案并练习✨ 查看解决方案并练习