本文概要
在关系数据库中,外键是一个字段或者是用于建立两个表之间的连接列。
在简单的话,你可以说,在一个表的外键用于指向另一个表的主键。
让我们举个例子来解释一下:
这里有两个表第一个是学生表,二是订单表。
这里订单由学生给出。
第一个表:
S_ID | 姓 | 名字 | 市 |
---|---|---|---|
1 | MAURYA | AJEET | ALLAHABAD |
2 | JAISWAL | RATAN | GHAZIABAD |
3 | ARORA | SAUMYA | 莫迪纳加尔 |
第二个表:
O_Id | 订单号 | S_ID |
---|---|---|
1 | 99586465 | 2 |
2 | 78466588 | 2 |
3 | 22354846 | 3 |
4 | 57698656 | 1 |
这里可以看到,“S_ID”中的“订单”表指向“S_ID”列“学生”表列。
- 在“学生”表中的“S_ID”列是“学生”表的主键。
- 在“订单”表中的“S_ID”列在“订单”表的外键。
外键约束通常是防止破坏表之间的链接作用。
它还可以防止无效数据外键列进入。
SQL FOREIGN KEY约束ON CREATE TABLE
(定义在单个列外键约束)
要创建的“S_ID”列中的外键创建“订单”表时:
MySQL的:
CREATE TABLE orders
(
O_Id int NOT NULL,Order_No int NOT NULL,S_Id int,PRIMAY KEY (O_Id),FOREIGN KEY (S_Id) REFERENCES Persons (S_Id)
)
SQL服务器/甲骨文/ MS访问:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMAY KEY,Order_No int NOT NULL,S_Id int FOREIGN KEY REFERENCES persons (S_Id)
)
SQL FOREIGN KEY约束的ALTER TABLE
如果已创建订单表,并且要建立在“S_ID”列外键约束,你应该写的语法如下:
定义在单个列外键约束:
MySQL的/ SQL服务器/甲骨文/ MS访问:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY(S_Id)
REFERENCES Students (S_Id)
DROP语法外键COSTRAINT
如果你想删除一个外键约束,使用的语法如下:
MySQL的:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL服务器/甲骨文/ MS访问:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders
主键和SQL中的外键的区别
这是主键和外键之间的一些重要区别SQL-
主键不能在另一方面的外键空可以为空。
主键始终是唯一的,而国外的键可以重复。
主键唯一标识记录在一个表中,而外键是一个表,是在另一个表的主键字段。
只有一个表中的主键,另一方面,我们可以在表中有多个外键。
默认情况下,主键增加,另一方面外键不会自动创建索引的聚簇索引,集群或非集群。你必须手动创建外键索引。
评论前必须登录!
注册