温馨提示  2024年 6月我们已经停止开发者板块文章内容更新,谢谢来访。存档数据
知识 2023-08-29 34 次阅读

mysql怎么增加外键约束

   

mysql中可用“alter table”语句和“foreign key”关键字增加外键,语法“alter table 表名 add constraint 外键名 foreign key(列名) references 主表名 (列名);”。

本教程操作环境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: 0mysql> show create table tb,emp2\\g*************************** 1. row *************************** table: tb,emp2create 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=gb23121 row in set (0.12 sec)

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