mysql创建数据表外键教程介绍。

MySQL外键约束(FOREIGNKEY)是表中一个独特字段,常常与主键约束一起使用。对于2个具有关联性的表来说,相关联字段中主键所在的表便是主表(父表),外键所在的表便是从表(子表)。

在创建表时设定外键约束

在CREATETABLE语句中,通过FOREIGNKEY关键词来指定外键,详细的语法格式如下所示:

[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]

REFERENCES <主表名> 主键列1 [,主键列2,…]

示例

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

字段名称数据类型备注
idINT(11)部门编号
nameVARCHAR(22)部门名称
locationVARCHAR(22)部门位置

创建tb_dept1的SQL语句和运行结果具体如下。

mysql> CREATE TABLE tb_dept1

-> (

-> id INT(11) PRIMARY KEY,

-> name VARCHAR(22) NOT NULL,

-> location VARCHAR(50)

-> );

Query OK, 0 rows affected (0.37 sec)

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

mysql> CREATE TABLE tb_emp6

-> (

-> id INT(11) PRIMARY KEY,

-> name VARCHAR(25),

-> deptId INT(11),

-> salary FLOAT,

-> CONSTRAINT fk_emp_dept1

-> FOREIGN KEY(deptId) REFERENCES tb_dept1(id)

-> );

Query OK, 0 rows affected (0.37 sec)

mysql> DESC tb_emp6;

+--------+-------------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| id | int(11) | NO | PRI | NULL | |

| name | varchar(25) | YES | | NULL | |

| deptId | int(11) | YES | MUL | NULL | |

| salary | float | YES | | NULL | |

+--------+-------------+------+-----+---------+-------+

4 rows in set (1.33 sec)

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

mysql创建数据表外键教程注意:从表的外键关联的一定要主表的主键,且主键和外键的数据类型务必一致。比如,两者都是INT类型,或是都是CHAR类型。假如不满足这种要求,在创建从表时,就会出现“ERROR1005(HY000):Can’tcreatetable”错误。