SQL 外键

SQL 外键

在关系数据库中,外键是用于在两个表之间建立联系的字段或列。

简单来说,一个表中的外键用于指向另一张表中的主键。

我们来举个例子来解释一下:

这里有两张表,第一张表是学生表,第二张表是订单表。

这里的订单是由学生提出的。

第一张表:

S_Id LastName FirstName CITY
1 MAURYA AJEET ALLAHABAD
2 JAISWAL RATAN GHAZIABAD
3 ARORA SAUMYA MODINAGAR

第二个表格:

O_Id OrderNo S_Id
1 99586465 2
2 78466588 2
3 22354846 3
4 57698656 1
  • 这里可以看到,“Orders”表中的“S_Id”列指向“Students”表中的“S_Id”列。
  • “Students”表中的“S_Id” 列是“Students”表中的主键。
  • “Orders”表中的“S_Id”列是“Orders”表中的外键。

外键约束通常防止破坏表之间链接的操作。

它还防止无效数据输入外键列。

SQL CREATE TABLE 语句内的FOREIGN KEY约束:

(在单个列上定义外键约束)

在创建“Orders”表时,在“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 Server / Oracle / MS Access:

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 ALTER TABLE的FOREIGN KEY约束:

如果Order表已经创建,你想在”S_Id”列上创建FOREIGN KEY约束,你应该写以下语法:

在单列上定义外键约束:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY(S_Id)
REFERENCES Students (S_Id)

删除外键约束的语法:

如果您想删除一个外键约束,可以使用以下语法:

MySQL:

 ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

在SQL中主键和外键的区别:

以下是主键和外键在SQL中的一些重要区别 –

主键不能为null,而外键可以为null。

主键始终是唯一的,而外键可以重复。

主键唯一地标识表中的记录,而外键是另一个表中的主键字段。

表中只有一个主键,而可以有多个外键。

默认情况下,主键自动添加一个聚集索引,而外键不会自动创建索引,无论是聚集索引还是非聚集索引。您必须为外键手动创建索引。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程