MySQL实战:创建学校数据库及学生、教师、分数表的关联关系
★想要掌握MySQL数据库的创建和表之间的关联?这篇文章带你一步步实现!
”
在数据库学习和开发中,创建一个完整的数据库并建立表之间的关联关系是非常重要的技能。今天,我们将一起创建一个名为school
的数据库,并在其中创建学生表
、教师表
和分数表
,同时建立三张表之间的关联关系。
📌 一、创建数据库 school
首先,我们需要创建一个名为school
的数据库。
SQL语句:
CREATE DATABASE school;
复制
使用数据库:
USE school;
复制
📌 二、创建学生表 student
学生表用于存储学生的基本信息。
表结构设计:
student_id
:学生ID,主键,自增name
:姓名,VARCHAR(50)age
:年龄,INTgender
:性别,ENUM('男', '女')class_id
:班级ID,外键
SQL语句:
CREATE TABLE student (
student_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
gender ENUM('男', '女'),
class_id INT
);复制
📌 三、创建教师表 teacher
教师表用于存储教师的基本信息。
表结构设计:
teacher_id
:教师ID,主键,自增name
:姓名,VARCHAR(50)subject
:教授科目,VARCHAR(50)
SQL语句:
CREATE TABLE teacher (
teacher_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
subject VARCHAR(50)
);复制
📌 四、创建分数表 score
分数表用于记录学生的考试成绩。
表结构设计:
score_id
:分数ID,主键,自增student_id
:学生ID,外键subject
:科目,VARCHAR(50)score
:成绩,DECIMAL(5,2)teacher_id
:教师ID,外键
SQL语句:
CREATE TABLE score (
score_id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT,
subject VARCHAR(50),
score DECIMAL(5,2),
teacher_id INT
);复制
📌 五、建立表之间的关联关系
1. 学生表与分数表的关系
关系类型:一对多 说明:一个学生可以有多条分数记录 操作:在 score
表中,student_id
作为外键引用student
表的student_id
SQL语句:
ALTER TABLE score
ADD CONSTRAINT fk_student
FOREIGN KEY (student_id)
REFERENCES student(student_id)
ON DELETE CASCADE
ON UPDATE CASCADE;复制
2. 教师表与分数表的关系
关系类型:一对多 说明:一个教师可以给多个学生评分 操作:在 score
表中,teacher_id
作为外键引用teacher
表的teacher_id
SQL语句:
ALTER TABLE score
ADD CONSTRAINT fk_teacher
FOREIGN KEY (teacher_id)
REFERENCES teacher(teacher_id)
ON DELETE SET NULL
ON UPDATE CASCADE;复制
📌 六、完整SQL脚本
为了方便大家实践,下面提供完整的SQL脚本,一键创建数据库和表,并建立关联关系。
-- 创建数据库
CREATE DATABASE school;
USE school;
-- 创建学生表
CREATE TABLE student (
student_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
gender ENUM('男', '女'),
class_id INT
);
-- 创建教师表
CREATE TABLE teacher (
teacher_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
subject VARCHAR(50)
);
-- 创建分数表
CREATE TABLE score (
score_id INT AUTO_INCREMENT PRIMARY KEY,
student_id INT,
subject VARCHAR(50),
score DECIMAL(5,2),
teacher_id INT
);
-- 添加外键约束:score.student_id -> student.student_id
ALTER TABLE score
ADD CONSTRAINT fk_student
FOREIGN KEY (student_id)
REFERENCES student(student_id)
ON DELETE CASCADE
ON UPDATE CASCADE;
-- 添加外键约束:score.teacher_id -> teacher.teacher_id
ALTER TABLE score
ADD CONSTRAINT fk_teacher
FOREIGN KEY (teacher_id)
REFERENCES teacher(teacher_id)
ON DELETE SET NULL
ON UPDATE CASCADE;复制
📌 七、验证关联关系
插入一些数据,验证表之间的关联是否正确。
插入学生数据:
INSERT INTO student (name, age, gender) VALUES
('张三', 18, '男'),
('李四', 17, '女');复制
插入教师数据:
INSERT INTO teacher (name, subject) VALUES
('王老师', '数学'),
('李老师', '英语');复制
插入分数数据:
INSERT INTO score (student_id, subject, score, teacher_id) VALUES
(1, '数学', 95.5, 1),
(2, '英语', 88.0, 2);复制
查询分数表,查看关联数据:
SELECT s.score_id, stu.name AS student_name, s.subject, s.score, t.name AS teacher_name
FROM score s
JOIN student stu ON s.student_id = stu.student_id
JOIN teacher t ON s.teacher_id = t.teacher_id;复制
🎯 总结
通过以上步骤,我们成功创建了school
数据库,并建立了student
、teacher
、score
三张表,以及它们之间的关联关系。现在,你已经掌握了在MySQL中创建数据库和关联表的基本方法。
赶快动手实践一下吧,巩固你的学习成果!
★如果你觉得这篇文章对你有帮助,欢迎点赞、分享,让更多人受益!
”
文章转载自一如老师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
3263次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
904次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
532次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
456次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
382次阅读
2025-04-15 14:48:05
MySQL 8.0 OCP 1Z0-908 考试解析指南(二)
JiekeXu
349次阅读
2025-04-30 17:37:37
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
302次阅读
2025-04-15 15:27:53
SQL优化 - explain查看SQL执行计划(下)
金同学
295次阅读
2025-05-06 14:40:00
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
数据库运维之道
290次阅读
2025-04-28 11:01:25
MySQL 8.0 OCP 1Z0-908 考试题解析指南
青年数据库学习互助会
285次阅读
2025-04-30 12:17:54