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”错误。



苏公网安备32021302001419号