介绍
在这个项目中,你将学习如何使用 MySQL 创建一个学生信息管理系统。这个系统包括两个表: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 秒)
🎯 任务
在这个项目中,你将学习:
- 如何启动 MySQL 服务器并登录到 MySQL 终端
- 如何使用 SQL 语句创建数据库和表
- 如何在两个表之间建立外键关系
🏆 成果
完成这个项目后,你将能够:
- 理解关系型数据库的概念以及如何创建和管理表
- 实现外键约束以确保相关表之间的数据完整性
- 应用你对 SQL 的知识来构建一个简单的学生信息管理系统
启动 MySQL 并创建数据库
在这一步中,你将学习如何启动 MySQL 服务器并创建 studentSys 数据库。
启动 MySQL 服务器:
sudo /etc/init.d/mysql start登录到 MySQL 终端:
mysql -uroot在
/home/labex/project目录中创建一个名为studentSys.sql的新文件。在
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 表。
在
studentSys.sql文件中,使用studentSys数据库:USE studentSys;创建
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表:Id和name。Id列被设置为主键并设置为自动递增。
创建 student_score 表并建立外键关系
在这一步中,你将学习如何创建 student_score 表,并在 student_score 表和 student_info 表之间建立外键关系。
在
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表:Id、score和Sid。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列中的值匹配。在 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 中练习更多实验来提升你的技能。
