mysql创建数据表外键教程介绍。
MySQL外键约束(FOREIGNKEY)是表中一个独特字段,常常与主键约束一起使用。对于2个具有关联性的表来说,相关联字段中主键所在的表便是主表(父表),外键所在的表便是从表(子表)。
在创建表时设定外键约束
在CREATETABLE语句中,通过FOREIGNKEY关键词来指定外键,详细的语法格式如下所示:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]
示例
为了呈现表与表之间的外键关系,本例在test_db数据库中创建一个部门表tb_dept1,表结构如下表所示。
字段名称 | 数据类型 | 备注 |
---|---|---|
id | INT(11) | 部门编号 |
name | VARCHAR(22) | 部门名称 |
location | VARCHAR(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”错误。