SQL Server 外键约束用于实现表之间的关系。为了规范化数据,我们使用此关系拆分表。在拆分数据时,我们需要一个引用,我们称之为外键关系。
在开始 SQL Server 外键示例之前,您应该记住以下几点。
- 您可以将外键列与另一个列中的主约束或唯一约束列链接。
- 您输入到约束列中的值应与引用的列匹配。否则,它将引发错误。
- 您可以定义 SQL Server 外键关系与同一数据库和服务器中的表。您可以使用触发器提供交叉引用完整性。
- 它允许您定义与同一表中的另一列的关系。这种关系是自引用的。
- 您不能删除具有此关系关系的表。
例如,Employee 表有 Employee ID,Orders 表有 Orders 信息和 Emp ID。请记住,此 Emp ID 与 Employee 表中的 Employee ID 列相关。本次演示,我们以 Department 为例。
创建 SQL Server 外键
我们可以使用 Transact 查询和 Management Studio 来创建外键。
通过 Transact 查询创建
如何使用 Transact 语句创建外键?在这里,我们将通过连接 tblDepartment 来创建此约束以创建表。
CREATE TABLE [dbo].[tblEmployee]( [EmpID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY, [FirstName] [nvarchar](255) NULL, [LastName] [nvarchar](255) NULL, [Education] [nvarchar](255) NULL, [YearlyIncome] [float] NULL, [Sales] [float] NULL, [DeptID] [int] NULL, CONSTRAINT [FK_tblDepartment_tblEmployee_DeptID] FOREIGN KEY([DeptID]) REFERENCES [dbo].[tblDepartment] ([ID]) ) GO
我们在表创建的末尾添加了 CONSTRAINT 语句。请参阅 创建表、主键、唯一约束、触发器 以及 引用完整性 在 SQL Server 中。
我将使用 SP_HELP 过程来检查表定义和约束。

查看我们新创建的。您也可以使用对象资源管理器来实现相同目的。要做到这一点,请展开 tblEMployee,然后展开 Keys 文件夹。

在现有表上创建
此示例向您展示了在现有表上添加 SQL Server 外键的步骤。为此,我们将创建一个新表。
CREATE TABLE [dbo].[tblEmployee]( [EmpID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY, [FirstName] [nvarchar](255) NULL, [LastName] [nvarchar](255) NULL, [Education] [nvarchar](255) NULL, [YearlyIncome] [float] NULL, [Sales] [float] NULL, [DeptID] [int] NULL ) GO
Messages
--------
Command(s) completed successfully.
现在让我添加约束。在这里,我们使用了 Alter Table 来更改内容,并使用 ADD Constraint 语句来添加约束。
ALTER TABLE [dbo].[tblEmployee] ADD CONSTRAINT [FK_tblDepartment_tblEmployee_DeptID] FOREIGN KEY([DeptID]) REFERENCES [dbo].[tblDepartment] ([ID])
Messages
--------
Command(s) completed successfully.
使用查询删除 SQL 外键
请注意,您不能使用查询来修改外键约束。要修改现有约束,您必须先删除(或删除)然后重新创建它。请使用 DROP Constraint 和 ALTER TABLE 语句来删除或丢弃外键。
ALTER TABLE [dbo].[tblEmployee] DROP CONSTRAINT [FK_tblDepartment_tblEmployee_DeptID]
在此示例中,我们将向您展示如何使用 Management Studio 创建。为此,请转到对象资源管理器。接下来,请展开 Database 文件夹,然后选择您要创建的表。接下来,右键单击它将打开上下文菜单。请选择 Design 选项。

它将在设计模式下打开相应的表。右键单击 DeptID 列,然后选择 Relationships 选项。

如您所见,没有现有的关系。请单击 Add 按钮添加新关系。

选择 Add 选项后,SSMS 将为您创建它。

接下来,单击 Tables and Columns Specification 选项旁边的 Browse 按钮。此属性用于指定两者之间的关系。

我们将 Primary 选择为 tblDepartment,Column 选择为 ID。

接下来,我们选择了 tblEmployee,列为 Dept ID。

使用 Management Studio 修改 SQL 外键
要在 Management Studio 中修改,请转到 Database 文件夹,选择表,然后转到 Keys 文件夹。接下来,右键单击名称并选择 Modify 选项。

单击 Modify 选项将以设计模式打开相应的表,以及 Relationships 窗口。

使用 Management Studio 删除 SQL 外键约束
展开 Database 文件夹,选择包含约束的表,然后转到 Keys 文件夹。接下来,右键单击名称并选择 Delete 选项。

选择 Delete 选项后,将打开 Delete Object 窗口。单击 OK 删除约束。

您可以在对象资源管理器中看到没有外键。

要删除外键,请在对象资源管理器中展开 Database 文件夹。右键单击表名,然后单击 Design 选项。接下来,选择 Relationships 选项以打开此窗口。现在,请选择它,然后单击 Delete 按钮。
