各位用户为了找寻关于mysql增加外键约束具体方法的资料费劲了很多周折。这里教程网为您整理了关于mysql增加外键约束具体方法的相关资料,仅供查阅,以下为您介绍关于mysql增加外键约束具体方法的详细内容
本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。
MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
定义外键时,需要遵守下列规则:
主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。 必须为主表定义主键。 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。 外键中列的数目必须和主表的主键中列的数目相同。 外键中列的数据类型必须和主表主键中对应列的数据类型相同。mysql给表增加外键约束
外键约束可以在修改表时添加,但是添加外键约束的前提是:从表中外键列中的数据必须与主表中主键列中的数据一致或者是没有数据。
在修改数据表时添加外键约束的语法格式如下:
? 1 2ALTER
TABLE
<数据表名>
ADD
CONSTRAINT
<外键名>
FOREIGN
KEY
(<列名>)
REFERENCES
<主表名> (<列名>);
示例
修改数据表 tb_emp2,将字段 deptId 设置为外键,与数据表 tb_dept1 的主键 id 进行关联
? 1 2 3 4 5 6mysql>
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
?
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> SHOW
CREATE
TABLE
tb_emp2G
*************************** 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代码:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32DROP
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怎么增加外键约束内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://www.php.cn/mysql-tutorials-486598.html