学生成绩管理系统

SQLSQLBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何使用 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 的知识来构建一个简单的学生信息管理系统

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) sql(("SQL")) -.-> sql/BasicSQLCommandsGroup(["Basic SQL Commands"]) sql(("SQL")) -.-> sql/DataDefinitionandIntegrityGroup(["Data Definition and Integrity"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/use_database("Database Selection") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_database("Database Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/drop_database("Database Deletion") mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_table("Table Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/drop_table("Table Removal") sql/BasicSQLCommandsGroup -.-> sql/create_table("CREATE TABLE statements") sql/BasicSQLCommandsGroup -.-> sql/drop_table("DROP TABLE statements") sql/DataDefinitionandIntegrityGroup -.-> sql/data_types("Data Types") sql/DataDefinitionandIntegrityGroup -.-> sql/constraints("Constraints") subgraph Lab Skills mysql/use_database -.-> lab-301414{{"学生成绩管理系统"}} mysql/create_database -.-> lab-301414{{"学生成绩管理系统"}} mysql/drop_database -.-> lab-301414{{"学生成绩管理系统"}} mysql/create_table -.-> lab-301414{{"学生成绩管理系统"}} mysql/drop_table -.-> lab-301414{{"学生成绩管理系统"}} sql/create_table -.-> lab-301414{{"学生成绩管理系统"}} sql/drop_table -.-> lab-301414{{"学生成绩管理系统"}} sql/data_types -.-> lab-301414{{"学生成绩管理系统"}} sql/constraints -.-> lab-301414{{"学生成绩管理系统"}} end

启动 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 中练习更多实验来提升你的技能。