SQL FOREIGN KEY 约束
sql foreign key 约束
foreign key 是指表中某一个字段的取值全部引用另一个表中的 unique key(唯一约束键)的值。
foreign key (外键)约束主要用来维护两个表之间数据的一致性。
让我们通过一个范例来解释外键。请看下面两个表:
"persons" 表:
p_id | lastname | firstname | address |
---|---|---|---|
1 | hansen | ola | timoteivn 10 |
2 | svendson | tove | borgvn 23 |
3 | pettersen | kari | storgt 20 |
"orders" 表:
o_id | orderno | p_id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
请注意,"orders" 表中的 "p_id" 列指向 "persons" 表中的 "p_id" 列。
"persons" 表中的 "p_id" 列是 "persons" 表中的 primary key。
"orders" 表中的 "p_id" 列是 "orders" 表中的 foreign key。
foreign key 约束用于预防破坏表之间连接的行为。
foreign key 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
1. create table 中 foreign key 约束
下面的 sql 在 "orders" 表创建时在 "p_id" 列上创建 foreign key 约束:
mysql:
create table orders
(
o_id int not null,
orderno int not null,
p_id int,
primary key (o_id),
foreign key (p_id) references persons(p_id)
)
(
o_id int not null,
orderno int not null,
p_id int,
primary key (o_id),
foreign key (p_id) references persons(p_id)
)