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

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

主表与从表

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

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

外键约束

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

(1)更新

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

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

(2)插入

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

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

(3)删除

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

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

MySQL 主表与从表的更多相关文章

  1. mysql中主表与从表

    说个例子,比如用户表和银行帐号表,没有用户,那来的银行帐号,而且用户可以没有银行帐号,这里主要表现在银行帐号中这个表中必有用户表中的字段用户,这个主表则为用户表,而从表,则依附于主表. 主表在数据库中 ...

  2. mysql学习笔记-- 多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  3. [django]主次表如何取出对方数据[主表obj.子表__set()]

    [sql]mysql管理手头手册,多对多sql逻辑 国家--城市例子 class Country(models.Model): name = models.CharField(max_length=3 ...

  4. MySQL笔记之多表

    貌似很久不写博客了,趁着项目刚完结,记录一下这段时间了解到的一些认识,或许有些地方理解的还不够到位,看到的希望能不吝赐教. 外键 概念 与索引的关系 写法 查询 一对多多对一查询 多对多查询 插入 多 ...

  5. 菜鸟崛起 DB Chapter 5 MySQL 5.6数据库表的基本操作

    5   数据库表的基本操作 在数据库中,数据表是数据库中最重要.最基本的操作对象,是数据存储的基本单位.数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的.每一行代表一条唯一的记录,每一列代 ...

  6. mysql 清空或删除表数据后,控制表自增列值的方法

    http://blog.sina.com.cn/s/blog_68431a3b0100y04v.html 方法1: truncate table 你的表名 //这样不但将数据全部删除,而且重新定位自增 ...

  7. MySql(一)表类型(存储引擎)

    MySql(一)表类型(存储引擎) 一.MYSQL存储引擎概述 二.存储引擎的特性对比 2.1 MyISAM 2.2 InnoDB 2.2.1 自动增长列 2.2.2 外键约束 2.2.3 存储方式 ...

  8. mysql 命令重命名表RENAME TABLE 句法

    mysql 命令重命名表RENAME TABLE 句法 RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2,...]更 ...

  9. MYSQL 解锁与锁表

    解锁 第一种 show processlist; 找到锁进程,kill id ; 第二种 mysql>UNLOCK TABLES; 锁表 锁定数据表,避免在备份过程中,表被更新 mysql> ...

随机推荐

  1. visual tudio 2017--发布

  2. MySQL深入理解

    [存储引擎] InnoDB表引擎 默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀. 数据存储在共享表空间,可以通过配置分开. 对主键查询的性能高于其他类型的存储引擎. 内部做了很多优化,从磁盘读 ...

  3. javascript另类方法高效实现htmlencode()与htmldecode()函数

    最常见的做法是采用正则表达式替换的方法,将特殊字符如 < > & 等进行替换,htmlencode的时候这样替换还比较容易,但发过来htmldecode的时候就不一定好用了,因为需 ...

  4. pyCharm编辑器激活使用

    1.打开激活窗口 2.选择 Activate new license with License server (用license server 激活) 3.在 License sever addres ...

  5. C# sapnco支持.net 4.5了,真是个意外的发现

    意外篇: 需要用C#写一个RFC直连的类库,需要引用sapnco.dll   sapnco_utils.dll两个文件 之前都是从网上下载的sapnco3.0,引用开发,在win10机器上使用没有问题 ...

  6. unity3d射线控制移动

    看看效果图 代码: using UnityEngine; using System.Collections; public class T2 : MonoBehaviour { // Use this ...

  7. jsp的文件包含漏洞

    jsp的文件包含分静态包含的动态包含两种: 静态包含:<%@include file="top.jsp"%> 动态包含:<jsp:include page=&qu ...

  8. python中安装并使用redis

    数据缓存系统:1:mongodb:是直接持久化,直接存储于硬盘的缓存系统2:redis: 半持久化,存储于内存和硬盘3:memcache:数据只能存储在内存里的缓存系统 redis是一个key-val ...

  9. Git-分支的建立与合并

    举一个实际工作中可能会遇到的分支建立与合并的例子: 开发某个网站. 为实现某个新的需求,创建一个分支. 在这个分支上开展工作. 假设此时,你突然接到一个电话说有个很严重的问题需要紧急修补,那么可以按照 ...

  10. <7>Cocos Creator 节点 cc.Node

    1.简介 节点(cc.Node)是渲染的必要组成部分.所有需要在游戏场景中显示的内容都必须是节点或者依附于节点之上.节点负责控制显示内容的位置.大小.旋转.缩放.颜色等信息. 2.节点属性 1: na ...