MySQL 数据表的关联关系

这篇具有很好参考价值的文章主要介绍了MySQL 数据表的关联关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

mysql数据库表关联,MySQL,mysql,数据库


关联关系介绍

在MySQL中,可以通过不同方式建立表之间的关联关系。以下是几种常见的关联关系类型:

  • 一对一关联(One-to-One):这种关联关系表示两个表中的每个记录在另一个表中只有一个匹配记录。示例:将两个表通过相同的主键进行连接。
  • 一对多关联(One-to-Many):这种关联关系表示一个表中的记录可以对应另一个表中的多个匹配记录。示例:在多的一方表中保存与一的一方表的主键关联。
  • 多对多关联(Many-to-Many):这种关联关系表示两个表之间存在多对多的关系,即一个记录在另一个表中可以有多个匹配记录,反之亦然。示例:通过引入第三个关联表来连接两个表,并存储相关联的外键。

通过外键约束,可以实现以下功能:

  • 参照完整性(Referential Integrity):外键约束可以确保在引用表(被引用表)中存在的值不会在另一个表(引用表)中出现无法匹配的情况。换句话说,外键只允许包含引用表已经存在的值,防止出现孤儿记录或失效引用。
  • 数据完整性(Data Integrity):外键约束可以防止在引用表中删除或更新主键时产生不一致的数据。当试图删除或修改引用表中的主键时,外键约束会检查是否有其他表中的数据依赖于该主键,从而保证数据的完整性。

为了建立这些关联关系,可以使用外键(FOREIGN KEY)在表之间创建引用。外键是指一个表中的字段,它与另一个表中的主键相对应,用于确保数据完整性和维护关联关系。通过定义外键约束,可以实现关联表之间的数据一致性和参照完整性。


外键约束

外键约束是一种在关系数据库中用于建立表与表之间关联关系的约束。它定义了一个表的字段(外键),该字段与另一个表的主键或唯一键相对应。

示例:学生表与班级表

创建班级表

create table classes(
	class_id int primary key auto_increment, -- 自增主键
	class_name varchar(20) not null unique,
	calss_remark varchar(200)
);

创建学生表,并添加外键

create table students(
	stu_num char(8) primary key,
	stu_name varchar(10) not null,
	stu_gender char(2) not null,
	stu_age int not null,
	cid int,  -- 若是一对一关系,则添加unique
	constraint FK_STUDENTS_CLASSES foreign key(cid) references classes(class_id)
	-- constraint 约束名称 foreign key(具体字段) references 关联的表的具体字段
);

或者在创建表后修改表结构

alter table students 
add constraint FK_STUDENTS_CLASSES foreign key(cid) references classes(class_id);

删除外键

alter table students drop foreign key FK_STUDENTS_CLASSES;

添加数据

-- 添加班级信息
insert into classes(class_name,calss_remark) values('2022软件1','...');
insert into classes(class_name,calss_remark) values('2022软件2','...');
insert into classes(class_name,calss_remark) values('2022软件3','...');
insert into classes(class_name,calss_remark) values('2022软件4','...');

-- 添加学生信息
insert into students(stu_num,stu_name,stu_gender,stu_age,cid) values('20220011','张三','男',17,1);
insert into students(stu_num,stu_name,stu_gender,stu_age,cid) values('20220012','李四','男',18,1);
insert into students(stu_num,stu_name,stu_gender,stu_age,cid) values('20220013','王五','女',17,2);
insert into students(stu_num,stu_name,stu_gender,stu_age,cid) values('20220014','赵六','男',20,3);
insert into students(stu_num,stu_name,stu_gender,stu_age,cid) values('20220015','小文','女',17,3);
insert into students(stu_num,stu_name,stu_gender,stu_age,cid) values('20220016','小莉','女',19,3);
insert into students(stu_num,stu_name,stu_gender,stu_age,cid) values('20220017','小博','男',18,3);
insert into students(stu_num,stu_name,stu_gender,stu_age) values('20220018','阿亚','男',19);

外键约束-级联

SQL中的级联(Cascade)是指在对一个表进行修改(删除或更新)时,同时对与之相关联的其他表的数据进行相应的操作。具体来说,级联操作可以包括级联删除、级联更新和级联设置为空。

  • 级联删除(ON DELETE CASCADE):当对主表进行删除操作时,自动删除与之关联的从表中的相关数据,以保持数据的一致性。
  • 级联更新(ON UPDATE CASCADE):当对主表进行更新操作时,自动更新与之关联的从表中的相关数据,以保持关联关系的正确性。
  • 级联设置为空(ON DELETE SET NULL):当对主表进行删除或更新操作时,将与之关联的从表中的外键值设置为空(NULL),适用于允许外键字段为空的情况。

可以在创建表时或添加外键时设置级联操作,

示例:

添加外键时,设置级联修改和级联删除

alter table students 
add constraint FK_STUDENTS_CLASSES 
foreign key(cid) references classes(class_id) on update cascade on delete cascade;  

以上示例中on update cascade指定了级联更新操作,on delete cascade指定了级联删除操作。

需要注意的是,使用级联操作时需要谨慎,确保不会破坏数据库的完整性和一致性。正确理解数据之间的关系,并根据实际需求选择合适的级联操作,以避免意外结果的发生。文章来源地址https://www.toymoban.com/news/detail-740900.html

到了这里,关于MySQL 数据表的关联关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL数据库——MySQL数据表添加字段(三种方式)

    MySQL 数据表是由行和列构成的,通常把表的“列”称为字段(Field),把表的“行”称为记录(Record)。随着业务的变化,可能需要在已有的表中添加新的字段。 MySQL 允许在开头、中间和结尾处添加字段。 一个完整的字段包括字段名、数据类型和约束条件。MySQL 添加字段的语

    2024年02月08日
    浏览(92)
  • MySQL创建数据库和数据表

    文章目录 前言 一、MySQL数据库是什么? 二、使用步骤 1.显示当前数据库 2.创建数据库          3.使用数据库          4.删除数据库          5.表的操作     5.1 显示数据库中的表     5.2 创建表     5.3 删除表          6.总结 MySQL数据库的创建操作 是一个客户

    2023年04月08日
    浏览(160)
  • MySQL数据库——6、删除数据表

    删除一个数据表,使用 SQL 命令 DROP TABLE 。 DROP TABLE 命令允许从数据库中永久删除指定的数据表及其所有数据。 DROP TABLE table_name;   table_name 是要删除的数据表的名称。 例如,要删除名为 users 的数据表,可以执行以下 SQL 命令: DROP TABLE users;   执行此命令后,名为 users 的数据

    2024年04月11日
    浏览(63)
  • MySQL:创建数据库,数据表,主键和外键

    目录 前言: 安装MySQL: 打开MySQL: 创建数据库: 查看已建数据库: 查看数据库引擎: 创建数据表:  主键约束: 单字段主键: 多字段联合主键: 外键约束: MySQL数据库安装了很久,一直也没静下心来学习,因为起步太晚,所以什么都想学点,又感觉有些力不从心,目前

    2023年04月27日
    浏览(135)
  • MySql数据库的初步安装与数据表结构数据管理

    目录 一、数据库的相关了解 1)数据库的概念  数据(Data) 表 数据库系统 2)数据库系统发展史 第一代数据库 第二代数据库 第三代数据库 当今主流数据库介绍 2)数据库的分类  关系数据库 非关系型数据库 非关系型数据库的优点 二、mysql的yum安装与源码编译安装   1)源

    2024年02月08日
    浏览(443)
  • Mysql 查询数据库或数据表中的数据量以及数据大小

     许多数据库的元数据都是存储在mysql中的,例如hive、startrockes,因此可以通过mysql中的“information_schema.TABLES”表来查询对应数据库或对应数据表的具体信息。 1、查询各个数据库中的数据条数和数据大小 2、查询各个数据表中的数据条数和数据大小 3、查看指定数据库容量大小

    2024年04月27日
    浏览(57)
  • 【MySQL】基础实战篇(1)—数据库与数据表的操作

    创建数据库 语法: 注: 在同一个数据库服务器上必须是唯一的,不允许存在同名的数据库。 此外在创建数据库时如果不进行自定义设置编码方式,就会使用系统默认的编码方式,所以我们可以在创建数据库的同时自定义设置编码方式。 语法: 字符集 是定义MySQL存储字符串

    2024年02月08日
    浏览(70)
  • MySQL相关的SQL语句、数据库、数据表、字段、类型

    1、 SQL 语句不区分大小写。 SQL语句 用途 描述 mysql -u root -p 连接 MySQL 在命令行窗口中输入 mysql -u root -p 命令,回车,然后输入 MySQL 密码(不要忘记了密码,找回麻烦),再回车就连接上 MySQL 了。最初都是使用 root 用户登录,工作中不能一直使用 root 用户登录。因为 root 权限太

    2024年02月13日
    浏览(95)
  • MySQL的约束类型、数据库操作、数据表操作大全(简述)

    目录 一.数据库的操作语法 二.MySQL数据库约束 三.数据类型 四.数据表操作 作者简介:  tq02,一个想成为编程高手的梦中人 作者主页:  tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 学习专栏:  🎥  MySQL基础          🎥  JavaSE                🎥   C语言 本

    2024年02月12日
    浏览(92)
  • 【MySQL新手入门系列二】:手把手教你入门MySQL - 数据库及数据表操作

    如果您是一位刚刚开始学习MySQL的新手,本文将为您提供一些实用的入门知识和技巧,帮助您快速上手。 【MySQL新手入门系列一】:手把手教你入门MySQL 前面我们已经大致讲了一下mysql的安装等介绍,本篇文章将以windows为例,介绍MySQL的数据库及数据表的操作(增删改查)。

    2024年02月10日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包