2025年mysql主键和外键的建立关系(mysql主键和外键的建立关系是什么)

mysql主键和外键的建立关系(mysql主键和外键的建立关系是什么)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p>MySQL&#xff08;python开发)——&#xff08;1&#xff09;数据库概述及其MySQL介绍<br /> MySQL&#xff08;python开发)——&#xff08;2&#xff09;数据库基本操作及数据类型<br /> MySQL&#xff08;python开发)——&#xff08;3&#xff09;表数据的基本操作&#xff0c;增删改查<br /> MySQL&#xff08;python开发)——&#xff08;4&#xff09;高级查询语句<br /> MySQL&#xff08;python开发)——&#xff08;5&#xff09;聚合操作<br /> MySQL&#xff08;python开发)——&#xff08;6&#xff09;索引操作<br /> MySQL&#xff08;python开发)——&#xff08;7&#xff09;外键约束和表关联关系<br /> MySQL&#xff08;python开发)——&#xff08;8&#xff09;视图<br /> MySQL&#xff08;python开发)——&#xff08;9&#xff09;函数和存储过程<br /> MySQL&#xff08;python开发)——&#xff08;10&#xff09;Sql操作及优化<br /> MySQL&#xff08;python开发)——&#xff08;11&#xff09;pymysql模块操作数据库</p> 

讯享网
  • 约束 : 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、关联性
  • foreign key 功能 : 建立表与表之间的某种约束的关系,由于这种关系的存在,能够让表与表之间的数据,更加的完整,关连性更强,为了具体说明创建如下部门表和人员表。
  • 示例
讯享网
 

上面两个表中每个人员都应该有指定的部门,但是实际上在没有约束的情况下人员是可以没有部门的或者也可以添加一个不存在的部门,这显然是不合理的。

  • 主表和从表:若同一个数据库中,B表的外键与A表的主键相对应,则A表为主表,B表为从表。
  • foreign key 外键的定义语法:
    讯享网

    该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用

     

建立表后增加外键

讯享网

注意:

  1. 并不是任何情况表关系都需要建立外键来约束,如果没有类似上面的约束关系时也可以不建立。
  2. 从表的外键字段数据类型与指定的主表主键应该相同。
  • 通过外键名称解除外键约束
     

注意:删除外键后发现desc查看索引标志还在,其实外键也是一种索引,需要将外键名称的索引删除之后才可以。

  • 级联动作
    • restrict(默认) : on delete restrict on update restrict
      • 当主表删除记录时,如果从表中有相关联记录则不允许主表删除
      • 当主表更改主键字段值时,如果从表有相关记录则不允许更改
    • cascade :数据级联更新 on delete cascade on update cascade


      讯享网

      • 当主表删除记录或更改被参照字段的值时,从表会级联更新
        讯享网
    • set null : on delete set null on update set null
      • 当主表删除记录时,从表外键字段值变为null
      • 当主表更改主键字段值时,从表外键字段值变为null
         

当我们应对复杂的数据关系的时候,数据表的设计就显得尤为重要,认识数据之间的依赖关系是更加合理创建数据表关联性的前提。一对多和多对多是常见的表数据关系:

  • 一对多关系

举例: 一个人可以拥有多辆汽车,每辆车登记的车主只有一人。

讯享网
  • 多对多关系

举例:一个运动员可以报多个项目,每个项目也会有多个运动员参加,这时为了表达多对多关系需要单独创建关系表。

 
讯享网

  • 定义
 
  • 实体、属性、关系

    讯享网
 

​ 属性

讯享网

​ 关系

 
  • E-R图的绘制

矩形框代表实体,菱形框代表关系,椭圆形代表属性

在这里插入图片描述

讯享网

如果多个表存在一定关联关系,可以多表在一起进行查询操作,其实表的关联整理与外键约束之间并没有必然联系,但是基于外键约束设计的具有关联性的表往往会更多使用关联查询查找数据。

  • 简单多表查询

多个表数据可以联合查询,语法格式如下:

 
讯享网

笛卡尔积现象就是将A表的每一条记录与B表的每一条记录强行拼在一起。所以,如果A表有n条记录,B表有m条记录,笛卡尔积产生的结果就会产生n*m条记录。

 
  • 内连接

内连接查询只会查找到符合条件的记录,其实结果和表关联查询是一样的,官方更推荐使用内连接查询。

在这里插入图片描述

讯享网
 
  • 左连接 : 左表全部显示,显示右表中与左表匹配的项

在这里插入图片描述

讯享网
 
  • 右连接 :右表全部显示,显示左表中与右表匹配的项

在这里插入图片描述

讯享网
 

注意:我们尽量使用数据量大的表作为基准表,放在前面。

讯享网

小讯
上一篇 2025-06-03 11:59
下一篇 2025-05-03 12:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/167498.html