通过上一篇随笔,笔者了解到,实体完整性是通过主键约束实现的,而参照完整性是通过外键约束实现的,两者都是为了保证数据的完整性和一致性。

主键约束比较好理解,就是主键值不能为空且不重复,已经强调好多次,所以这里重点记录对外键约束的学习。

主表与从表

若同一个数据库中,B表的外键与A表的主键相对应,则A表为主表,B表为从表。

假设学生表(学号,姓名,性别,专业号),专业表(专业号,专业名称),则学生表中的专业号为学生表的外键,其与专业表中“专业号”属性相关联,因此,专业表为主表,学生表为从表。

外键约束

外键约束是相关联的两个表之间的数据操作约束,包括删除,插入,更新等。理论上,在对关联数据表进行数据操作时,只改其一,不改其二,不符合关系数据库的参照完整性。

(1)更新

更新主表的某一个记录的主键值(其实,这种操作是不被允许的),系统会自动检测该主键值在从表中是否存在,若存在,则需要明确操作(一般默认为不被允许);

更新从表的某一个记录的外键值,系统会自动检测欲更新的外键值在主表中是否存在,若不存在,则需要明确操作(一般默认为不被允许);

(2)插入

向主表中插入一条新的记录,不会对现有从表造成影响;

向从表中插入一条新的记录,系统会检测外键对应的属性值在主表中是否存在,若存在,否则需要明确操作(一般默认为不被允许);

(3)删除

从主表中删除一条记录,系统会自动检测该记录的主键值是否在从表中存在,若存在,则需要明确操作(一般默认为不被允许);

从从表中删除一条记录,不会对主表造成影响;

mysql怎样区分主表从表_MySQL 主表与从表相关推荐

  1. mysql查询3个表_mysql如何实现多表查询,三个数据表的联合查询?

    在mysql查询语句中,为了实现查询到某些信息,我们会用到多表的联合查询.那么如何去实现三表的联合查询呢?下面我给大家举一个例子,现在 我这里有三个表,一个是文件表wenjian,一个是管理角色表ad ...

  2. mysql建立班级表_MySql 复习及学生表,课程表,班级表的创建

    学习笔记 ·数据库表的创建及查询 文章目录 学习笔记 任务过程 第一步:分析需求 第二步:新建数据库 第三步:新建表 1.Grade表 2.Student表 3.subject表 第三步:插入数据 1 ...

  3. mysql查看比较大的数据表_mysql 如何查看哪些表数据量比较大

    数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不能一个表一个表的去查询吧,在mysql中也有类似于oracle的数据字典表,只不过mysql没有oracle记录的那么多和详细,但也足够我们查询 ...

  4. mysql数据库检表_MYSQL数据库检查数据表和修复数据表

    数据库在运行中,会因为人为因素或一些不可抗力因素造成数据损坏.所以为了保护数据的安全和最小停机时间,我们需制定详细的备份/恢复计划,并定期对计划的有效性进行测试. 结合MySQL服务器的运行机制和所提 ...

  5. mysql 分表_MySQL如何分库分表

    数据库分库分表估计很多伙伴都没有实践过,就是因为自己公司的业务不是很多,没有那么多数据.假如有一天项目的人数上来了,你写的系统支撑不住了,希望这篇文章带给你一丝丝的思路." 前言 在面试过程 ...

  6. mysql查询添加数据库表_MySQL数据库篇之表的增删改查

    主要内容: 一.表介绍 二.创建表 三.查看表结构 四.修改表结构 五.复制表 六.删除表 1️⃣ 表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称 ...

  7. mysql 表字段信息从一张表迁移到另一张表_Mysql之分库分表

    互联网系统需要处理大量用户的请求.比如微信日活用户破10亿,海量的用户每天产生海量的数量:美团外卖,每天都是几千万的订单,那这些系统的用户表.订单表.交易流水表等是如何处理呢? 数据量只增不减,历史数 ...

  8. mysql截断表_mysql – 如何正确截断表?

    我正在使用带有ruby的datamapper将数据存储到某些表中. 有几个表有非常大量的信息,我想在用户"重建数据库"时清除它们(它基本上删除了所有内容并重新计算数据). 我最初尝 ...

  9. mysql binlog 过滤表_mysql日志恢复指定表【从binlog日志过滤恢复指定数据表】

    很多时候,MYSQL数据库由于一些误操作,需要恢复指定表,或某个表指定时间点的数据,这个时候需要根据MYSQL的binlog日志做时间点的恢复,下面将介绍这个方案的具体步骤: 一.登录数据库刷新bin ...

  10. mysql年月分表_MySQL 按日期分表

    一.表不存在时则创建 之前做项目实在是太赶了,很多东西都没记录.是时候补回来了 MySQL做一个大表,由于要存历史记录,所以数据量很大,查询很慢.恰好查询的时候,又不需要时间太久的冷数据.现在将其实现 ...

最新文章

  1. python类介绍_python类介绍
  2. java学习(5):全局变量和局部变量
  3. pycharm上python项目的导出_pycharm项目打包成exe
  4. 【Arcpy】Python in ArcGIS
  5. NAT技术与代理服务器的区别
  6. hbuilderX里uniapp和php,使用 DCloud 工具 HBuilder X 开发 uni-app 项目踩过的一些坑
  7. matlab chrom(i pos),Matlab遗传算法问题 MATLAB遗传算法
  8. SUSE12 sp1如何进入单用户模式
  9. 电脑上如何进行录屏?
  10. VS2015社区版、企业版、专业版下载官网地址
  11. lt;一 SAP ABAP 将数字转换成本地语言(中文、英文)大写
  12. Ubuntu windows双系统没有引导界面的解决办法
  13. MPU6050加速度传感器学习笔记之传感器
  14. 如何PC机上搭建 中标麒麟系统+达梦数据库的开发环境
  15. Oracle锁3:DDL锁
  16. 命令行 笔记本键盘禁用_如何在 Ubuntu 20.04 上禁用坞站(dock) | Linux 中国
  17. iOS Tagged Pointer
  18. Pandas武功修炼秘籍(第一章:初见端倪)
  19. java 如何使用ocr_Java使用tess4J进行OCR图像识别
  20. D. Ela and the Wiring Wizard codeforces 1737D

热门文章

  1. 若依-cloud启动报错
  2. Tornado training:1_Get Started
  3. js页面滚动,设置锚点,控制页面滚动到某个节点位置
  4. 《The swirlds hashgraph consensus algorithm: Fair, fast, byzantine fault tolerance》Hashgraph论文的学习
  5. 如何设置一个计算机用户访问磁盘,怎么把硬盘共享给其他电脑
  6. 专业网站建设能给企业带来大回报
  7. 【Android系统学习路线】
  8. python实现MP3加封面图片,修改作者,专辑
  9. Visual Stdio C++ 编译器 编译 (GSL) GNU Scientific Library 的方法介绍(1)
  10. Python docx书写的通用设置