https://www.cnblogs.com/x739400043/p/4732158.html

外键和级联

 

关于外键写的不错的网址:http://blog.csdn.net/lidaasky/article/details/7645524

  • 外键

    • 定义
    • 作用
    • 主表和从表
    • 建键原则
    • 事件触发限制
  • 外键简单实例
  • 触发器实现
    • 建表语句
    • 关系说明
    • 实现级联删除
  • 更改设置实现
  • 总结

文首

今天给考试系统添加学生信息失败,原因是student与classes表有级联关系,作为从表的student表不能随意添加,这些都学过却还没怎么用过,借这次机会学习一下。

外键

说到级联删除不得不先说一下外键,外键的定义:“如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键;换而言之,如果关系模式R中的某属性集不是R的主键,而是另一个关系R1的主键则该属性集是关系模式R的外键”。

建立外键的sql语句:

  1. foreign key(idB) references A(idA)
  1. foreign key(idB) references A(idA)

从语法分析也可以看出:外键是一种表之间字段值的引用关系

        主表和从表

主表和从表:以另一个关系的外键作主关键字的表被称为从表,具有此外键的表被称为主表。说白了就是:主表是被引用的表,外表是引用其他表的表

那么外键有什么作用?外键作用可以说是:保持数据一致性,完整性,关联性,主要目的是控制存储在外键表中的数据。就是当你对一个表的数据进行操作,和他有关联的一个或更多表的数据能够同时发生改变,避免无效或是无用的改变和孤立的数据

建键原则

1、 外键字段为主键
  2、 所有的键都必须唯一
  3、避免使用复合键
  4、外键总是关联唯一的键字段

外键约束事件触发。既然有外键约束,当违反约束时会发生什么?我们把它的反应看作事件,一共有四种:

1、级联:当主表更改时,从表跟从更改。

2、不执行任何操作。

3、设置null。

4、设置默认值。

主表、从表和外键的定义:我把我的笔记本借给你用,可以把“我”当作是主表、“笔记本”当作外键、“你”当作从表,就是说“你”在使用(引用)“我”的“笔记本”;

外键的作用就是:现在你想把我的笔记本卖了扔了送人(增加更新删除等),得看看我允许不允许,我想搬家走人,你不把笔记本还给我,我不能搬;

  建键原则:借之前首先咱得说好了,我只有这么一台笔记本,你也最好是也只借了我这台笔记本,避免你也借了别人的笔记本,不知道哪个是我的了。

  事件触发:我说你赶紧把笔记本还给我,你可以选择还给我,可以选择不搭理我等。总而言之,由于这笔记本,“你”和“我”关联起来,这台笔记本怎么样,不能一个人说了算。

级联删除

但是如果想级联删除怎么办?

sql语句修改设置:因为默认的外键触发是“不执行任何操作”,所以我们可以使用sql语句更改设置:

  1. FOREIGN KEY(id)REFERENCES tabley(id) on delete cascade on update cascade
  1. FOREIGN KEY(id)REFERENCES tabley(id) on delete cascade on update cascade

意思是从表会跟随主表的改变而改变。

MYSQL---外键 primary key 作用的更多相关文章

  1. MYSQL外键(Foreign Key)的使用

    在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束.外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持): ...

  2. mysql 约束条件 外键 forigen key 介绍

    外键 forigen key作用 :建立表之间的关系 什么是外键 员工信息表有这些字段:id号  姓名 性别 员工所在部门名 部门描述信息 公司有3个部门,但是有1个亿的员工,那意味着 员工所对应的部 ...

  3. MySQL外键之级联

    简介 MySQL外键起到约束作用,在数据库层面保证数据的完整性.例如使用外键的CASCADE类型,当子表(例如user_info)关联父表(例如user)时,父表更新或删除时,子表会更新或删除记录,这 ...

  4. MySQL外键的作用和创建

    MySQL外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据.使两张表形成关联,外键只能引用外表中列的值! 我们来建两个表 CREATE TABLE `example1` ( ` ...

  5. MySQL中的主键,外键有什么作用详解

    MySQL中的主键,外键有什么作用详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学关系型数据库的同学,尤其在学习主键和外键时会产生一定的困惑.那么今天我们就把这个困惑连根拔起 ...

  6. 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)

    1. 数据库有六大约束 主键(primary key) 外键(foreign key):被参照的键必须有唯一约束或是主键 非空(not null) 默认(default) 检查(check):orac ...

  7. MySQL外键约束On Delete、On Update各取值的含义

    主键.外键和索引的区别?   主键 外键 索引 定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值 主索引(由关键字PRIMARY定义的索引) ...

  8. Mysql 外键设置

    MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个:    一个是让数据库自己通过外键来保证数据的完整性和一致性    一个就是能够增加ER图的可读性    有些人认为外键的建立会给 ...

  9. Mysql外键的使用

    MySQL外键(请确保数据库是innodb类型)网上有很多介绍的文章,这里我就凭自己的理解再次整理了下,废话不多说,直入正题哈.外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据 ...

随机推荐

  1. 题解【Codeforces886B】Vlad and Cafes

    本题是模拟题. 我们可以用b数组记录每个数字在a数组中出现的最后位置,然后从0到2·10^5依次寻找最后一次出现最早的数(注意是0!),最后统计输出即可. AC代码: #include <bit ...

  2. ansible笔记(1):ansible基本概念

    一.基础概念 1.ansible是什么? ansible是一个配置管理工具,是一个自动化运维工具. 2.ansible能做什么? 它可以完成一组批量化的工作任务,或者经常重复性的工作任务.例如:a.在 ...

  3. java基础(八)之函数的复写/重写(override)

    复写的意思就是子类对父类的修改. 复写的条件: 1.在具有父子类关系的两个类当中:2.父类和子类各有一个函数,这两个函数的定义保持一致(返回值类型.函数名.参数列表) 还是老样子,3个文件来说明. P ...

  4. Redis06——Redis五大数据类型 list

    list 单键多值 Redis列表是简单的字符串列表,按照插入顺序排序,可以添加左边/右边 底层实际上是一个双向链表,对两端的操作性能好,但是通过索引下标的操作中间节点性能较差  lpush/rpus ...

  5. VMware 搭建linux虚拟机环境

    1.任务管理器-服务 确认VMware服务是否启动 2.VMware生成网关地址 编辑--虚拟网络编辑器 VMnet8 NAT设置子网IP,子网掩码,网关 3.windows网络--更改适配器设置-- ...

  6. Linux - XShell - alt 快捷键的设置

    1. 概述 命令行的 alt 快捷键可能会冲突 2. 环境 os win10 centos7 xshell xhell6 3. 场景 开启 centos7 虚拟机 在 win10 打开 xshell6 ...

  7. 远程传输文件命令:scp

    1.概述 scp(secure copy)是一个基于 SSH 协议在网络之间进行安全传输的命令,其格式为“scp [参数] 本地文件 远程帐户@远程 IP 地址:远程目录”. 与第 2 章讲解的 cp ...

  8. 动态设置 layui select 为选中状态

    // 当前的select的id $('#type').val('你的value值'); //更新全部 layui.form.render();

  9. 如何用 Python 实现超级玛丽的人物行走和碰撞检测?

    ​ 功能介绍 人物行走 人物的行走速度这边分成水平方向(X轴)和竖直方向(Y轴),水平方向的速度要考虑加速度和摩擦力,竖直方向的速度要考虑重力加速度. 水平方向:设定X轴向右走的速度为大于0,向左走的 ...

  10. 红帽RHCE培训-课程3笔记内容2

    9 NFS 9.1 NFS基础 目标 .使用NFS将文件系统连接到客户端,并使用IP 地址控制访问 .使用NFS将文件系统连接到客户端,并使用kerberos 来控制访问 .配置用户名和密码控制访问的 ...