实际上 foreign key 是一列或几列的组合,可用于设置两个表中数据之间的链接。换句话说,我们可以说 foreign key 约束与两个表相关。它还用于增强数据完整性,因为表的主键链接到其他表的外键。
语法foreign key [column_name] references [table having primary key] ([column_name]);
这里references是一个关键字; column_name 是要设置 foreign key 的列的列表;具有主键的表是包含主键的表的名称; column_name 是已设置 primary key 的列的列表。
示例假设我们有两个表“customer”和“orders”。两个表之间的关系可以通过字段“cust_id”指定的表“orders”中的外键建立。创建两个表的查询如下 -
mysql> create table customer(cust_id int primary key, first_name varchar(20), last_name varchar(20), city varchar(10));query ok, 0 rows affected (0.13 sec)mysql> create table orders(order_id int primary key, product_name varchar(25), orderdate date, cust_id int, foreign key(cust_id) references customer(cust_id));query ok, 0 rows affected (0.13 sec)mysql> describe orders;+--------------+-------------+------+-----+---------+-------+| field | type | null | key | default | extra |+--------------+-------------+------+-----+---------+-------+| order_id | int(11) | no | pri | null | || product_name | varchar(25) | yes | | null | || orderdate | date | yes | | null | || cust_id | int(11) | yes | mul | null | |+--------------+-------------+------+-----+---------+-------+4 rows in set (0.04 sec)
这里,表“customer”称为父表或引用表,表“orders”称为子表或引用表。子表中的行必须包含父表中存在的值。例如,表“orders”中的每一行都必须具有“customer”表中存在的“cust_id”。
以上就是foreign key 是什么意思以及我们如何在 mysql 表中使用它?的详细内容。