• 北京公园科普月教您识飞鸟--旅游频道_百家讲坛刘秀 2018-11-26
  • 无证旅行社套路深 低价游、“潜规则”坑骗老年人--旅游频道_汉寿党建网 2018-11-26
  • 上赛道开启蒸蒸日上2018_叶赫那拉宇策 2018-11-26
  • 多名乘客生病 阿联酋一航班在纽约降落后被隔离_沈人杰 2018-11-26
  • 四川绵阳市涪城区工区街道迎宾社区党总支 
    盘活资源,让共建共治有支撑_重生之医门嫡女
    2018-11-26
  • 国家发改委助力民企纾困新表态:只要是好企业 我们就拿钱救_无路可逃by蓝飏 2018-11-26
  • 军事安全遭遇新变局新挑战_雅荡 2018-11-26
  • 青海省:游客在青海旅游被骗1万多 县委迅速协调解决_重生之我是宇智波泉奈 2018-11-26
  • 颠覆2018 悬疑2019_帮忙找一本书【要小说阅读网女生版那里的】 2018-11-26
  • 中国驻英大使馆在伦敦马克思墓前举办缅怀活动_朱炜明 2018-11-26
  • 综述:中马共享21世纪海上丝路新梦想_泰山恩仇 2018-11-26
  • 国庆在线旅游投诉七成都是酒店预订--旅游频道_影儿女装官网 2018-11-26
  • 交通运输部:前三季度高速公路完成投资超7亿_中原证券官网 2018-11-25
  • 涉案金额10.4亿!吕梁市原副市长张中生被判处死刑_何辅堂 2018-11-25
  • 景山学校落户通州!7大名校将为区域加分 _荀攸传 2018-11-25
  • 商务合作,域名招租请联系QQ:959847138
    殷佳心>热搜>正文

    MariaDB数据库的外键约束实例代码介绍详解

    2019-04-11 01:22:40 IT时代网 [ 综合 ] 分享

    殷佳心 www.yzcom.cn   文章主要给大家介绍了关于MariaDB数据库的外键约束的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

    外键

    外键的用途是确保数据的完整性。它通常包括以下几种:

      1 实体完整性,确保每个实体是唯一的(通过主键来实施)

      2 域完整性,确保属性值只从一套特定可选的集合里选择

      3 关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值

    1.什么是外键约束

      与主键约束不同,创建外键约束不会自动创建对应的索引。 但是由于以下原因,对外键手动创建索引通常是有用的:

      当在查询中组合相关表中的数据时,经常在联接条件中使用外键列,方法是将一个表的外键约束中的一列或多列与另一个表中的主键列或唯一键列匹配。 索引使 数据库引擎 可以在外键表中快速查找相关数据。 但是,创建此索引并不是必需的。 即使没有对两个相关表定义主键或外键约束,也可以对来自这两个表中的数据进行组合,但两个表间的外键关系说明已用其键作为条件对其进行了优化,以便组合到查询中。

      对主键约束的更改可由相关表中的外键约束检查。

      外键约束(foreign key)就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强。

      关于数据表的完整性和关连性,可以举个例子

      有二张表,一张是用户表,一张是订单表:

      1.如果我删除了用户表里的用户,那么订单表里面跟这个用户有关的数据,就成了无头数据了,不完整了。

      2.如果我在订单表里面,随便插入了一条数据,这个订单在用户表里面,没有与之对应的用户。这样数据也不完整了。

      如果有外键的话,就方便多了,可以不让用户删除数据,或者删除用户的话,通过外键同样删除订单表里面的数据,这样也能让数据完整。

      通过外键约束,每次插入或更新数据表时,都会检查数据的完整性。

    2.创建外键约束

    2.1 方法一:通过create table创建外键

      语法:

      参数的解释:

      RESTRICT: 拒绝对父表的删除或更新操作。

      CASCADE: 从父表删除或更新且自动删除或更新子表中匹配的行。ON DELETE CASCADE和ON UPDATE CASCADE都可用

    注意:on update cascade是级联更新的意思,on delete cascade是级联删除的意思,意思就是说当你更新或删除主键表,那外键表也会跟随一起更新或删除。

      精简化后的语法:

    2.1.1 插入测试数据

      例子:我们创建一个数据库,包含用户信息表和订单表

    2.1.2 测试级联删除

    2.1.3 测试级联更新

      更新数据之前的状态

      更新数据?

      更新数据后的状态?

    2.1.4 测试数据完整性

      在上面的例子中,user_order表的外键约束,user_order表受userprofile表的约束

      在user_order里面插入一条数据u_id为5用户,在userprofile表里面根本没有,所以插入数据失败

      先向userprofile表中插入记录,再向user_order表中插入记录就可以了

    2.2 方法二:通过alter table创建外键和级联更新,级联删除

      语法:

      例子:

    3.删除外键

      语法

      例子:

    4.使用外键约束的条件

      要想外键创建成功,必须满足以下4个条件:

      1、确保参照的表和字段存在。

      2、组成外键的字段被索引。

      3、必须使用type指定存储引擎为:innodb.

      4、外键字段和关联字段,数据类型必须一致。

    5.使用外键约束需要的注意事项

      1.on delete cascade on update cascade 添加级联删除和更新:

      2.确保参照的表userprofile中id字段存在。

      3.确保组成外键的字段u_id被索引

      4.必须使用type指定存储引擎为:innodb。

      5.外键字段和关联字段,数据类型必须一致。

    总结

      以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值。

    声明:本站部分资源来源于网络,版权归原作者或者来源机构所有,如作者或来源机构不同意本站转载采用,请通知我们,我们将第一时间删除内容。本站刊载文章出于传递更多信息之目的,所刊文章观点仅代表作者本人观点,并不意味着本站赞同作者观点或证实其描述,其原创性及对文章内容的真实性、完整性、及时性本站亦不作任何保证或承诺,请读者仅作参考。
    编辑:
    赖永初 | 武汉助孕公司 | 三亚代怀孕公司 | 天津代怀孕哪里找 | 郑州助孕优 | 南昌代怀孕 | 恒兴烧坊 | IT传奇霸业 | 大话健康网 | 孝感新闻资讯网 | 企鹅保险网 | 嵊州新闻资讯网 | 代生孩子的女人怎么找 | 吉林来孕 |
    商务合作,域名招租请联系QQ:959847138