首页数据库MySQL如何创建表外键约束?有什么规则?

MySQL如何创建表外键约束?有什么规则?

时间2024-03-24 17:32:03发布访客分类数据库浏览421
导读:这篇文章主要介绍MySQL如何创建表外键约束,MySQL数据库中创建表外键约束是很基础的操作,也很好理解,但是有几点创建表外键约束的规则大家需要注意,接下来我们就一起来了解一下MySQL创建表外键约束以及创建规则。 本教程操作环境:wind...

这篇文章主要介绍MySQL如何创建表外键约束,MySQL数据库中创建表外键约束是很基础的操作,也很好理解,但是有几点创建表外键约束的规则大家需要注意,接下来我们就一起来了解一下MySQL创建表外键约束以及创建规则。

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

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

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

创建表外键约束

可以在ALTER TABLE语句中,通过 FOREIGN KEY 关键字来指定外键;添加外键约束的前提是:从表中外键列中的数据必须与主表中主键列中的数据一致或者是没有数据。

具体的语法格式如下:

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

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

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

  • 必须为主表定义主键。

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

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

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

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

示例:

修改数据表 tb_emp2,将字段 deptId 设置为外键,与数据表 tb_dept1 的主键 id 进行关联,SQL 语句和运行结果如下所示。

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如何创建表外键约束的介绍,上述示例具有一定的参考价值,有需要的朋友可以了解看看,希望对大家学习mysql外键约束有帮助,想要了解更多可以继续浏览网络其他相关的文章。

文本转载自PHP中文网

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: MySQL如何创建表外键约束?有什么规则?
本文地址: https://pptw.com/jishu/652211.html
数据库的三个基本特点你了解多少? mybatis中if-else的嵌套具体用法是什么?

游客 回复需填写必要信息