返回顶部
首页 > 资讯 > 数据库 >补12.关于mysql的外键约束
  • 858
分享到

补12.关于mysql的外键约束

2024-04-02 19:04:59 858人浏览 薄情痞子
摘要

一、什么是Mysql中的外键(froeign key)假如说有两张表,其中一张表的某个字段指向了另一张表的主键,这就可以称之为外键(froeign key)。在子表中增加一条记录时,需要确定是否有与父表相对

一、什么是Mysql中的外键(froeign key)

假如说有两张表,其中一张表的某个字段指向了另一张表的主键,这就可以称之为外键(froeign key)。

在子表中增加一条记录时,需要确定是否有与父表相对应的记录。

如果父表没有对应的记录,那么子表(从表)无法插入这条数据。


下面是一个关于外键的示例:

1.首先创建一个主表,这个主表存放了班级信息。

create table class ( id TINYINT PRIMARY KEY auto_increment, class_name varchar(20)) engine=innodb;

2.在class表中插入五条记录,代表有5个班级。

insert into class (id,class_name)value(1,"class1"), (2,"class2"), (3,"class3"), (4,"class4"), (5,"class5");

3.创建一个子表,这个子表存放了学生和班级的对应关系,这些学生属于哪个班级?

create table student( id int primary key auto_increment, name varchar(20), class_id TINYINT) engine=innodb;

4.插入6条记录,代表了6个学生。

insert into student(id,name,class_id) value (1,"stu1",2),(2,"stu2",2),(3,"stu3",1),(4,"stu4",3),(5,"stu5",1),(6,"stu6",4);


现在的规则是,一个班级可以对应多个学生,但是一个学生只能属于一个班级。


5.增加外键约束。

接下来,为student表增加一个外键约束。

alter table student add constraint cls_stu foreign key(class_id) references class(id);

#约束字段以class表的id字段为主。


6.测试外键约束是否生效。

刚刚我们创建的class班级表中一共有5个记录,也就是五个班级。(分别是class1~class5)

现在学生表中,新增一个学生,这个学生属于一个class表中不存在的班级,班级6,看看会是什么效果:

mysql> insert into student(id,name,class_id)value(7,"stu7",6);

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`db_1`.`student`, CONSTRAINT `cls_stu` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`))

无法添加这个记录,这说明了,student表的class_id字段,已经受class表的id字段的约束,当class表的id字段没有这个id时,student表无法插入这条记录。



7.删除一个表的外键约束。

ALTER TABLE student DROP FOREIGN KEY 【外键名称】

例:

alter table student drop foreign key cls_stu;


8.innodb引擎支持的一些关于外键的操作。

#当一个表被设置了外键约束,如果在父表中找不到候选键,则不允许在子表上进行insert/update操作。

# 注意!!!在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update或on delete子句!!!

#下面是innodb引擎所支持的常见的四种方式:


8.1cascade方式 在父表上update/delete记录时,同步update/delete掉子表的匹配记录

外键的级联删除:如果父表中的记录被删除,则子表中对应的记录自动被删除

alter table student add constraint cls_stu foreign key(class_id) references class(id) on delete cascade;

#级联删除或更改,当父表外键位置做出修改,或者删除,子表更改或删除完全取决于 on delete或者on update,当然,这两个关键字是可以同时出现的!!!

下面是一个级联删除关键字的示例:

alter table student add constraint cls_stu foreign key(class_id) references class(id) on delete cascade;


8.2 set null方式 在父表上update/delete记录时,将子表上匹配记录的列设为null。

例:

alter table student add constraint cls_stu foreign key(class_id) references class(id) on delete set null;


8.3 Restrict方式 :拒绝对父表进行删除更新操作(不常用)。


8.4 No action方式 在mysql中同Restrict,如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作(了解)


9.关于外键的一些补充:

设置级联操作:

在主表数据发生改变时,与之关联的从表数据应该如何处理

    使用关键字:

     on update

     on delete

    来标识

允许的级联动作:

cascade关联操作,如果主表被更新或删除,从表也会执行相应的操作

set null,表示从表数据不指向主表任何记录

restrict:拒绝主表的相关操作

alter table t_student add foreign key (class_id) references t_class (class_id)

on delete set null; # 在删除外键时,将从表的外键值设置为null

修改外键:

先删除这个表的外键,然后再增加

alter table tb_name drop froeign key 外键名称

外键名称在建立外键时可以自定义名称,如果不自定义,会按照mysql自动生成一个名称

show create table tb_name;


您可能感兴趣的文档:

--结束END--

本文标题: 补12.关于mysql的外键约束

本文链接: https://lsjlt.com/news/41907.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 补12.关于mysql的外键约束
    一、什么是mysql中的外键(froeign key)假如说有两张表,其中一张表的某个字段指向了另一张表的主键,这就可以称之为外键(froeign key)。在子表中增加一条记录时,需要确定是否有与父表相对...
    99+
    2024-04-02
  • 【MySQL】主键约束和外键约束
    目录 1、PRIMARY KEY 2、FOREIGN KEY 3、表的设计 3.1 一对一 3.2 一对多 3.3 多对多 1、PRIMARY KEY 上期我们讲述了 not null 和 unique 约束,而本期的第一个约束就...
    99+
    2023-09-01
    mysql 数据库
  • MySQL外键约束
    CASCADE:父表delete、update的时候,子表会delete、update掉关联记录; SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为no...
    99+
    2020-02-25
    MySQL外键约束
  • MySQL主键约束和外键约束详解
    目录1、PRIMARY KEY2、FOREIGN KEY3、表的设计3.1 一对一3.2 一对多3.3 多对多1、PRIMARY KEY 上期我们讲述了 not null 和 unique 约束,而本期的第一个约束就是这...
    99+
    2023-03-13
    mysql主键约束和外键约束 mysql主键和外键
  • MySQL主键约束和外键约束怎么设置
    这篇“MySQL主键约束和外键约束怎么设置”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“M...
    99+
    2023-03-13
    mysql
  • 详解MySQL 外键约束
    官方文档: https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html 1.外键作用: MySQL通过外键约束来保证表与表之间的数...
    99+
    2022-05-11
    MySQL 外键 MySQL 外键约束
  • MySQL外键约束详解
    目录一、mysql外键约束作用二、外键约束创建(一)创建外键约束的条件(二)在创建数据表时创建外键约束(三)在创建数据表后添加外键约束三、外键约束功能演示今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL外键...
    99+
    2022-07-29
    Mysql外键约束
  • MySQL 外键约束和表关系相关总结
    目录外键(Foreign Key)如何确定表关系如何建立表关系一对多关系 - 员工表和部门表多对多一对一表关系总结外键(Foreign Key) 按照上述所说,一张表存储员工信息会极大的浪费资源,重复数据太多,这个...
    99+
    2022-05-18
    MySQL 外键约束 MySQL 表关系
  • MySQL外键约束如何开启与关闭
    这篇文章主要介绍MySQL外键约束如何开启与关闭,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在维护MySQL数据库时,经常会受到外键约束的影响。-- 关闭外键约束检查SET @ORIG_FOREIGN_KEY_CH...
    99+
    2023-06-26
  • 怎么写mysql外键约束
    今天就跟大家聊聊有关怎么写mysql外键约束,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。mysql外键约束的写法:【[CONSTRAINT <...
    99+
    2024-04-02
  • mysql怎么加外键约束
    如何使用 mysql 添加外键约束?确定主外键字段。在子表中定义外键约束,引用主表的主键字段。语法:alter table 子表_名称 add foreign key (外键_字段) r...
    99+
    2024-05-30
    mysql
  • MySQL外键约束的实例讲解
     MySQL的外键约束是用来在两个表之间建立链接的,其中一个表发生变化,另外一个表也发生变化。从这个特点来看,它主要是为了保证表数据的一致性和完整性的。 对于两个通过外键关联的表,相关联字段中主键所在的表是...
    99+
    2022-05-12
    MySQL 外键约束
  • mysql取消外键约束的方法
    这篇文章主要介绍了mysql取消外键约束的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql取消外键限制(约束)的方法:通过“ALTE...
    99+
    2024-04-02
  • MySQL设置外键约束的方法
    这篇文章给大家分享的是有关MySQL设置外键约束的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。MySQL 外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,...
    99+
    2024-04-02
  • mysql如何建立外键约束
    小编给大家分享一下mysql如何建立外键约束,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql建立外键约束的方法:直接执行【CREATE TABLE stu(sid INT PRIMAR...
    99+
    2024-04-02
  • mysql如何增加外键约束
    小编给大家分享一下mysql如何增加外键约束,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! mysql中可用“ALTER TABLE”语句和“FOREIGN K...
    99+
    2024-04-02
  • mysql如何查询外键约束
    这篇文章主要介绍了mysql如何查询外键约束的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql如何查询外键约束文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • mysql怎么删除外键约束
    在MySQL中,可以使用`ALTER TABLE`语句来删除外键约束。具体步骤如下:1. 确定要删除外键约束的表名和约束名称。2. ...
    99+
    2023-08-31
    mysql
  • mysql外键约束怎么设置
    要设置MySQL中的外键约束,您需要按照以下步骤进行操作:1. 在创建表时,使用FOREIGN KEY关键字来定义外键约束。语法如下...
    99+
    2023-10-21
    mysql
  • MySQL怎么添加外键约束
    MySQL中添加外键约束的方法如下所示:1. 创建表时添加外键约束:```sqlCREATE TABLE 表名 (列名 数据类型,....
    99+
    2023-10-12
    MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作