加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql实例关于MySQL外键的简单学习教程

发布时间:2020-12-12 00:51:01 所属栏目:MySql教程 来源:网络整理
导读:《Mysql实例关于MySQL外键的简单学习教程》要点: 本文介绍了Mysql实例关于MySQL外键的简单学习教程,希望对您有用。如果有疑问,可以联系我们。 MYSQL教程 在MySQL中,InnoDB引擎类型的表支持了外键约束. 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表

《Mysql实例关于MySQL外键的简单学习教程》要点:
本文介绍了Mysql实例关于MySQL外键的简单学习教程,希望对您有用。如果有疑问,可以联系我们。

MYSQL教程在MySQL中,InnoDB引擎类型的表支持了外键约束.
外键的使用条件:
1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);
2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;
3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;
外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;
外键的定义语法:
代码如下:

MYSQL教程
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name,…) 
REFERENCES tbl_name (index_col_name,…) 
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}] 
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}] 

MYSQL教程该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用,如果不指定CONSTRAINT symbol,MYSQL会自动生成一个名字.
ON DELETE、ON UPDATE表示事件触发限制,可设参数:

  • RESTRICT(限制外表中的外键改动)
  • CASCADE(跟随外键改动)
  • SET NULL(设空值)
  • SET DEFAULT(设默认值)
  • NO ACTION(无动作,默认的)

MYSQL教程
如果子表试图创建一个在父表中不存在的外键值,InnoDB会拒绝任何INSERT或UPDATE操作.如果父表试图UPDATE或者DELETE任何子表中存在或匹配的外键值,最终动作取决于外键约束定义中的ON UPDATE和ON DELETE选项.InnoDB支持5种不同的动作,如果没有指定ON DELETE或者ON UPDATE,默认的动作为RESTRICT:

MYSQL教程? 1. CASCADE: 从父表中删除或更新对应的行,同时自动的删除或更新自表中匹配的行.ON DELETE CANSCADE和ON UPDATE CANSCADE都被InnoDB所支持.

MYSQL教程? 2. SET NULL: 从父表中删除或更新对应的行,同时将子表中的外键列设为空.注意,这些在外键列没有被设为NOT NULL时才有效.ON DELETE SET NULL和ON UPDATE SET SET NULL都被InnoDB所支持.

MYSQL教程? 3. NO ACTION: InnoDB拒绝删除或者更新父表.

MYSQL教程? 4. RESTRICT: 拒绝删除或者更新父表.指定RESTRICT(或者NO ACTION)和忽略ON DELETE或者ON UPDATE选项的效果是一样的.

MYSQL教程? 5. SET DEFAULT: InnoDB目前不支持.

MYSQL教程? 外键约束使用最多的两种情况无外乎:

MYSQL教程? 1)父表更新时子表也更新,父表删除时如果子表有匹配的项,删除失败;

MYSQL教程? 2)父表更新时子表也更新,父表删除时子表匹配的项也删除.

MYSQL教程? 前一种情况,在外键定义中,我们使用ON UPDATE CASCADE ON DELETE RESTRICT;后一种情况,可以使用ON UPDATE CASCADE ON DELETE CASCADE.

MYSQL教程? InnoDB允许你使用ALTER TABLE在一个已经存在的表上增加一个新的外键:

MYSQL教程
ALTER TABLE tbl_name
  ADD [CONSTRAINT [symbol]] FOREIGN KEY
  [index_name] (index_col_name,...)
  REFERENCES tbl_name (index_col_name,...)
  [ON DELETE reference_option]
  [ON UPDATE reference_option]

MYSQL教程? InnoDB也支持使用ALTER TABLE来删除外键:
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读