小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2024-05-28 / 15 阅读
0
0

MySQL 操作关联表

在MySQL中,关联表操作是通过定义外键约束来实现不同表之间的关联,从而表达一对一、多对一和多对多等关系。下面是对这些关联类型的详细介绍和示例。

一对一(One-to-One)

一对一关系意味着一个表中的每一条记录在另一个表中都有唯一对应的记录。这种关系比较少见,但在某些特定情况下会用到。

示例场景:考虑一个用户表和一个用户详细信息表,每个用户只有一个详细信息记录。

表结构

  • 用户表(User):UserID(PK), UserName
  • 用户详细信息表(UserDetails):DetailID(PK), UserID(FK, UNIQUE), Address

创建表

CREATE TABLE User (
    UserID INT PRIMARY KEY,
    UserName VARCHAR(100)
);

CREATE TABLE UserDetails (
    DetailID INT PRIMARY KEY,
    UserID INT,
    Address VARCHAR(255),
    FOREIGN KEY (UserID) REFERENCES User(UserID) ON DELETE CASCADE ON UPDATE CASCADE
);

这里,UserIDUserDetails表中被定义为外键并设置为唯一(UNIQUE),确保一对一关系。

多对一(Many-to-One)

多对一关系中,一个表的多条记录关联到另一个表的单条记录。这是最常见的情况,比如一个部门有多名员工。

示例场景:部门表和员工表,一个部门有多个员工。

表结构

  • 部门表(Departments):DepartmentID(PK), DepartmentName
  • 员工表(Employees):EmployeeID(PK), Name, DepartmentID(FK)

创建表

CREATE TABLE Departments (
    DepartmentID INT PRIMARY KEY,
    DepartmentName VARCHAR(100)
);

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    Name VARCHAR(100),
    DepartmentID INT,
    FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID) ON DELETE SET NULL ON UPDATE CASCADE
);

Employees表中,DepartmentID作为外键关联到 Departments表的 DepartmentID,表示每个员工属于一个部门。

多对多(Many-to-Many)

多对多关系指两个表中的记录可以相互关联,且一个记录可以关联到多个其他记录,反之亦然。这需要一个中间关联表来维护两边的关系。

示例场景:学生表和课程表,一个学生可以选修多门课程,一门课程可以被多个学生选修。

表结构

  • 学生表(Students):StudentID(PK), StudentName
  • 课程表(Courses):CourseID(PK), CourseName
  • 中间表(StudentCourses):StudentID(FK), CourseID(FK)

创建表

CREATE TABLE Students (
    StudentID INT PRIMARY KEY,
    StudentName VARCHAR(100)
);

CREATE TABLE Courses (
    CourseID INT PRIMARY KEY,
    CourseName VARCHAR(100)
);

CREATE TABLE StudentCourses (
    StudentID INT,
    CourseID INT,
    PRIMARY KEY (StudentID, CourseID),
    FOREIGN KEY (StudentID) REFERENCES Students(StudentID) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID) ON DELETE CASCADE ON UPDATE CASCADE
);

中间表 StudentCourses有两个字段 StudentIDCourseID,它们都是外键,分别引用 StudentsCourses表的主键,用来表示学生和课程之间的多对多关系。

以上就是MySQL中关联表操作的基本概念及实现方式,每种关系的选择和实现应基于实际业务需求。

第5章 多表操作.pptx

https://www.alipan.com/s/ncMMHnK36jr

点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。


评论