mysql外键(Foreign Key)介绍和创建外键的方法

 更新时间:2014年02月13日 11:59:12   作者:  
这篇文章主要介绍了mysql外键(Foreign Key)命令和添加外键方法,需要的朋友可以参考下

在MySQL中,InnoDB引擎类型的表支持了外键约束。
外键的使用条件:
1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);
2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;
3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;

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

外键的定义语法:

复制代码 代码如下:

[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}]

该语法可以在 CREATE TABLE 和 ALTER TABLE 时使用,如果不指定CONSTRAINT symbol,MYSQL会自动生成一个名字。
ON DELETE、ON UPDATE表示事件触发限制,可设参数:
RESTRICT(限制外表中的外键改动)
CASCADE(跟随外键改动)
SET NULL(设空值)
SET DEFAULT(设默认值)
NO ACTION(无动作,默认的)

相关文章

  • Mysql中使用Union—多表合并之行合并

    Mysql中使用Union—多表合并之行合并

    这篇文章主要介绍了Mysql中使用Union—多表合并之行合并,如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字,union(或称为联合)的作用是将多个结果合并在一起显示出来,需要的朋友可以参考下
    2023-07-07
  • ERROR 1045 (28000): Access denied for user ''''root''''@''''localhost'''' (using password: YES)实用解决方案

    ERROR 1045 (28000): Access denied for user ''''root''''@''''

    这篇文章主要介绍了Linux下数据库报ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)实用解决方案,希望能对大家有帮助。
    2017-10-10
  • MySQL性能瓶颈排查定位实例详解

    MySQL性能瓶颈排查定位实例详解

    这篇文章主要介绍了MySQL性能瓶颈排查定位的方法,结合实例形式详细分析了MySQL排查性能瓶颈问题的步骤与相关技巧,需要的朋友可以参考下
    2016-04-04
  • MySql中的longtext字段的返回问题及解决

    MySql中的longtext字段的返回问题及解决

    这篇文章主要介绍了MySql中的longtext字段的返回问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • MySQL优化及索引解析

    MySQL优化及索引解析

    这篇文章主要介绍了MySQL优化及索引解析,索引关系型数据库为了加速对表中行数据检索的数据结构,下面文章详细内容,需要的小伙伴可以参考一下
    2022-03-03
  • MySQL优化总结-查询总条数

    MySQL优化总结-查询总条数

    这篇文章主要介绍了MySQL优化总结-查询总条数的相关内容,文中进行简单的测试对比,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • mysql创建表分区的实现示例

    mysql创建表分区的实现示例

    表分区是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分,本文主要介绍了mysql创建表分区的实现示例,感兴趣的可以了解一下
    2024-01-01
  • MYSQL如何查询成绩为前5名的学生

    MYSQL如何查询成绩为前5名的学生

    这篇文章主要介绍了MYSQL如何查询成绩为前5名的学生问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • mysql 数据备份与恢复使用详解(超完整详细教程)

    mysql 数据备份与恢复使用详解(超完整详细教程)

    这篇文章主要介绍了mysql 数据备份与恢复使用详解,根据实际的业务需求,经验参考可以据数据规模大小,服务器磁盘容量,大致是分为全备和增备,差异备份,本文给大家详细讲解需要的朋友可以参考下
    2022-11-11
  • MySQL truncate table语句的使用

    MySQL truncate table语句的使用

    这篇文章主要介绍了MySQL truncate table语句的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论