暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL实战:手把手教你搭建学校数据库及其关联表

一如老师 2024-10-09
58

MySQL实战:创建学校数据库及学生、教师、分数表的关联关系

想要掌握MySQL数据库的创建和表之间的关联?这篇文章带你一步步实现!

在数据库学习和开发中,创建一个完整的数据库并建立表之间的关联关系是非常重要的技能。今天,我们将一起创建一个名为school
的数据库,并在其中创建学生表
教师表
分数表
,同时建立三张表之间的关联关系。


📌 一、创建数据库 school

首先,我们需要创建一个名为school
的数据库。

SQL语句:

CREATE DATABASE school;

复制

使用数据库:

USE school;

复制

📌 二、创建学生表 student

学生表用于存储学生的基本信息。

表结构设计:

  • student_id
    :学生ID,主键,自增
  • name
    :姓名,VARCHAR(50)
  • age
    :年龄,INT
  • gender
    :性别,ENUM('男', '女')
  • class_id
    :班级ID,外键

SQL语句:

CREATE TABLE student (
    student_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50NOT 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(50NOT 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(50NOT NULL,
    age INT,
    gender ENUM('男''女'),
    class_id INT
);

-- 创建教师表
CREATE TABLE teacher (
    teacher_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50NOT 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.51),
(2'英语'88.02);

复制

查询分数表,查看关联数据:

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论