在本篇文章里小编给大家整理的是一篇关于mysql增加外键约束具体方法及相关实例内容,有兴趣的朋友们可以跟着学习下。

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。

外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。

定义外键时,需要遵守下列规则:

主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。

必须为主表定义主键。

主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。

外键中列的数目必须和主表的主键中列的数目相同。

外键中列的数据类型必须和主表主键中对应列的数据类型相同。

mysql给表增加外键约束

外键约束可以在修改表时添加,但是添加外键约束的前提是:从表中外键列中的数据必须与主表中主键列中的数据一致或者是没有数据。

在修改数据表时添加外键约束的语法格式如下:

ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);

示例

修改数据表 tb_emp2,将字段 deptId 设置为外键,与数据表 tb_dept1 的主键 id 进行关联

mysql> ALTER TABLE tb_emp2
-> ADD CONSTRAINT fk_tb_dept1
-> FOREIGN KEY(deptId)
-> REFERENCES tb_dept1(id);
Query OK, 0 rows affected (1.38 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SHOW CREATE TABLE tb_emp2\G
*************************** 1. row ***************************
Table: tb_emp2
Create Table: CREATE TABLE `tb_emp2` (
`id` int(11) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`deptId` int(11) DEFAULT NULL,
`salary` float DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_tb_dept1` (`deptId`),
CONSTRAINT `fk_tb_dept1` FOREIGN KEY (`deptId`) REFERENCES `tb_dept1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.12 sec)

注意:在为已经创建好的数据表添加外键约束时,要确保添加外键约束的列的值全部来源于主键列,并且外键列不能为空。

内容扩展:

使用外键约束的时机

老实说,在MySQL中使用InnoDB表的时候,不一定非用外键约束不可,然而,为了外键约束在某些情况下的功用,我们将通过前面提到的例子的代码进行具体说明。它包括两个MyISAM表,分别用于存放博客文章和评论。

定义数据库模式时,我们要在这两个表之间建立起一对多的关系,方法是在存放评论的表中创建一个外键,以将其中的数据行(即评论)对应到特定的博客文章。下面是创建示例MyISAM表的基本SQL代码:

DROP TABLE IF EXISTS `test`.`blogs`;CREATE TABLE `test`.`blogs` (`id` INT(10) UNSIGNED AUTO_INCREMENT,`title` TEXT,`content` TEXT,`author` VARCHAR(45) DEFAULT NULL,PRIROSE KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;DROP TABLE IF EXISTS `test`.`comments`;CREATE TABLE `test`.`comments` (`id` INT(10) UNSIGNED AUTO_INCREMENT,`blog_id` INT(10) UNSIGNED DEFAULT NULL,`comment` TEXT,`author` VARCHAR(45) DEFAULT NULL,PRIROSE KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

到此这篇关于mysql增加外键约束具体方法的文章就介绍到这了。

教你mysql如何增加外键约束相关推荐

  1. mysql外键约束案例_详解MySQL中的外键约束问题

    使用MySQL开发过数据库驱动的小型web应用程序的人都知道,对关系数据库的表进行创建.检索.更新和删除等操作都是些比较简单的过程 .理论上,只要掌握了最常见的SQL语句的用法,并熟悉您选择使用的服务 ...

  2. mysql不能删除外键吗,MySQL不能删除外键约束所需的索引

    MySQL不能删除外键约束所需的索引 我需要改变现有的数据库添加一列. 因此我也想更新UNIQUE字段来包含这个新列. 我试图删除当前的索引,但不断收到错误MySQL Cannot drop inde ...

  3. mysql级联删除外键约束_mysql通过外键级联删除

    mysql 可通过外键约束,实现数据的级联更新或者删除. 例如有主表(员工排班表): CREATE TABLE `personal_schedule` ( `id` int(11) NOT NULL  ...

  4. mysql级联删除外键约束_玩转MySQL的外键约束之级联删除篇

    [IT168 文档]如今,许多关系型数据库管理系统都提供了外键约束这一强大的功能特性,它能够帮助我们自动地触发指定的动作,诸如删掉.更新数据库表的记录等,从而维护各数据库表之间预定义的关系.本文将演示 ...

  5. oracle外键约束怎么删除,mysql oracle 删除外键约束

    oracle 删除外键约束 禁用约束 启用约束 oracle 删除外键约束 禁用约束 启用约束 执行以下sql生成的语句即可 删除所有外键约束 Sql代码  select 'alter table ' ...

  6. mysql级联删除外键约束_mysql增加外键级联删除示例

    增加外键级联删除: ALTER TABLE `extends` ADD CONSTRAINT `extends_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES ` ...

  7. mysql外键约束脚本_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

  8. 如何在MySQL中设置外键约束

    MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个:     一个是让数据库自己通过外键来保证数据的完整性和一致性     一个就是能够增加ER图的可读性     有些人认为外键的建 ...

  9. 在mysql中如何添加外键约束_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

最新文章

  1. java判断括号是否闭合_【python每日一练】有效括号
  2. Linux 调优方案, 修改最大连接数(ulimit命令)
  3. Chrome OS 0.4.220 Beta下载已发布
  4. Spring Boot filter
  5. 灾备还缺一套评价体系
  6. MairDB 修改表(三)
  7. 手机访问 电脑的html文件,手机能访问电脑的共享文件吗 如何用手机看电脑文件...
  8. 3D slicer的教程网站
  9. pandas 学习 —— 逻辑表达式与布尔索引
  10. python items和setdefault函数
  11. hdu 1231最大连续子序列 动态规划
  12. 我不是来约架,我只是请他们说几句实话——QCon上海2015编程语言专题前瞻
  13. VC++黑客编程收集的源码集合,只有你想不到的
  14. C语言冒泡排序(升序)
  15. 字符自编车牌号c语言,自编车牌号码大全 2018年自编车牌号技巧
  16. Gluster的配置及离线安装
  17. linux系统程序问题报告,Linux程序设计实验报告.docx
  18. 华擎主板bios设置图解_华擎主板bios设置_华擎主板bios设置图解_asrock主板bios设置...
  19. 服务器虚拟多个终端,虚拟化终端新主流 支持多操作系统
  20. 什么是算命里说的三奇命,天上三奇,地下三奇,人中三奇

热门文章

  1. 运营谈恋爱,真的太太太太太太会撩了
  2. 大佬算法校招经验总结(拼多多、小米、华为、百度等)
  3. 【每日一算法】求众数
  4. Python标准库queue模块原理浅析
  5. Jupyter notebook 指定 Python 解释器 anaconda
  6. 爬虫之xpath语法-节点修饰语法
  7. 网络工程师_记录的一些真题_2007下半年上午
  8. JSP第二次作业_1小题
  9. 安装eclipse时一直跳转JRE Missing页面
  10. 技术01期:大规模图计算【基础篇】