当前位置:龙图IT服务 > 数据库 >

MySQL外键使用详解

作者:IT服务外包 发布时间:2015-06-24 阅读: 转至微博:

  最近有开始做一个实验室管理系统,因为分了几个表进行存储·所以要表间的关联··研究了一下MySQL的外键。

  (1)只有InnoDB类型的表才可以使用外键,mysql默认是MyISAM,这种类型不支持外键约束

  (2)外键的好处:可以使得两张表关联,数据的一致性和实现一些级联操作;

  (3)外键的作用:

  保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!

  (4)建立外键的前提:

  两个表必须是InnoDB表类型。

  使用在外键关系的域必须为索引型(Index)。

  使用在外键关系的域必须与数据类型相似

  (5)创建的步骤

  指定主键关键字: foreign key(列名)

  引用外键关键字: references 外键表名(外键列名)

  (6)事件触发:on delete和on update , 可设参数cascade(跟随外键改动), restrict(外表中的外键改动),set Null(设空值),set Deult(设默认值),[默认]no action

  (7)举例

  outTable表 主键 id 类型 int

  创建含有外键的表:

  create table temp( id int, name char(20), foreign key(id) references outTable(id) on delete cascade on update cascade);

  缺点:在对MySQL做优化的时候类似查询缓存,索引缓存之类的优化对InnoDB类型的表是不起作用的,还有在数据库整体架构中用得同步复制也是对InnoDB类型的表不生效的,像数据库中核心的表类似商品表请大家尽量不要是使用外键,如果同步肯定要同步商品库的,加上了外键也就没法通不了,优化也对它没作用,岂不得不偿失,做外键的目的在于数据完整性,请大家通过程序来实现这个目的而不是外键,!

  以上所述就是本文的全部内容了,希望大家能够喜欢。

  请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!

关键词: mysql使用