怎么写mysql外键约束

  介绍

今天就跟大家聊聊有关怎么写mysql外键约束,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

mysql外键约束的写法:【[约束& lt;外键名祝辞)外键字段名引用& lt;主表名的在主键列1】。外键约束是表的一个特殊字段,经常与主键约束一起使用。

在CREATE TABLE语句中,通过外键关键字来指定外键。

具体的语法格式如下:

[约束& lt;外键名祝辞)外键字段名[,字段名2,…)   引用& lt;主表名的在1(主键列,主键列2,…]

MySQL外键约束(外键)是表的一个特殊字段,经常与主键约束一起使用。

对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。

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

    <李>

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

    <李>

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

    <李>

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

    <李>

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

    <李>

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

举例:

为了展现表与表之间的外键关系,本例在test_db数据库中创建一个部门表tb_dept1,表结构如下表所示。

怎么写MySQL外键约束

创建tb_dept1的SQL语句和运行结果如下所示。

mysql>创建表tb_dept1   →(   →INT id(11)主键,   →名字VARCHAR(22)不是零,   →位置VARCHAR (50)   →);   查询好,0行影响(0.37秒)

创建数据表tb_emp6,并在表tb_emp6上创建外键约束,让它的键deptId作为外键关联到表tb_dept1的主键id、SQL语句和运行结果如下所示。

mysql>创建表tb_emp6   →(   →INT id(11)主键,   →名字VARCHAR (25),   →deptId INT (11),   →工资浮动,   →约束fk_emp_dept1   →外键(deptId)引用tb_dept1 (id)   →);   查询好,0行影响(0.37秒)      mysql>DESC tb_emp6;   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + +   | |字段类型零额外默认关键| | | | |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + +   | | int id (11) | | PRI零| | |   | |名称varchar(25) |是| |零| |   | deptId | int(11) |是| MUL零| | |   零| | | |是的浮动工资| | |   + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + +   4行集(1.33秒)

以上语句执行成功之后,在表tb_emp6上添加了名称为fk_emp_dept1的外键约束,外键名称为deptId,其依赖于表tb_dept1的主键id。

注意:从表的外键关联的必须是主表的主键,且主键和外键的数据类型必须一致。例如,两者都是INT类型,或者都是字符类型。如果不满足这样的要求,在创建从表时,就会出现“错误1005 (HY000):停下来# 39;t create table”错误。

怎么写mysql外键约束