MySQL外键使用详解
最近有开始做一个实验室管理系统,因为分了几个表进行存储?所以要维护表间的关联??研究了一下MySQL的外键。 (1)只有InnoDB类型的表才可以使用外键,mysql默认是MyISAM,这种类型不支持外键约束 (2)外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作; (3)外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值! (4)建立外键的前提: 两个表必须是InnoDB表类型。 (5)创建的步骤 指定主键关键字: foreign key(列名) 引用外键关键字: references <外键表名>(外键列名) (6)事件触发限制:on delete和on update,可设参数cascade(跟随外键改动),restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action (7)举例 outTable表 主键 id 类型 int 创建含有外键的表: 复制代码 代码如下: 说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列筛除 当外键的值改变 本表中对应的列值改变。 复制代码 代码如下: 缺点:在对MySQL做优化的时候类似查询缓存,索引缓存之类的优化对InnoDB类型的表是不起作用的,还有在数据库整体架构中用得同步复制也是对InnoDB类型的表不生效的,像数据库中核心的表类似商品表请大家尽量不要是使用外键,如果同步肯定要同步商品库的,加上了外键也就没法通不了,优化也对它没作用,岂不得不偿失,做外键的目的在于保证数据完整性,请大家通过程序来实现这个目的而不是外键,切记! 以上所述就是本文的全部内容了,希望大家能够喜欢。 请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 用sql脚本创建sqlserver数据库触发器范例语句
- SQLServer---使用Case When解决SQLServer数据分类汇总问题
- ef-code-first – 根据现有数据库验证EF代码第一模型
- sqlserver 游标的实现
- 实战:sqlserver 2008 R2容灾方案:另一种思路-1
- sql-server – 是否可以使用免费版本的SQL Server安装Team
- sql-server – 如何自动刷新sql server olap cube
- sql – SSIS结果集,Foreachloop和Variable
- 综合分析 SQL SERVER 性能优化
- SQLSERVER开发的二十一条规则