借助MS SQL如何添加外键

什么是外键?

外键是在表中加入的一种指向另一张表中特定数据列的约束。它们是在两个表之间建立关系的主要机制之一。为了将数据存储在两个相关的表中,外键用于在两个表之间创建引用完整性约束,以确保所有的数据都是一致和完整的。通过使用外键,可以使数据存储在一个关系模型中,从而可以支持更加复杂的查询。

如何添加外键?

在MS SQL中添加外键是一件很简单的事情。通常情况下,你只需要执行简单的ALTER TABLE语句即可。

步骤一:创建两张相关联的表

为了说明如何在MS SQL中创建外键,我们需要首先创建两张相关联的表。在这个例子中,我们将创建两张名为"Customers"和"Orders"的表。

CREATE TABLE Customers(

CustomerID INT NOT NULL PRIMARY KEY,

CustomerName VARCHAR(150) NOT NULL,

ContactName VARCHAR(50),

Country VARCHAR(50)

)

以上代码用于创建名为"Customers"的表,该表包含了4个字段:CustomerID、CustomerName、ContactName以及Country。

CREATE TABLE Orders(

OrderID INT NOT NULL PRIMARY KEY,

OrderDate DATE NOT NULL,

CustomerID INT NOT NULL,

FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)

)

以上代码用于创建名为"Orders"的表,该表包含了3个字段:OrderID、OrderDate以及CustomerID。注意到在CustomerID字段中添加了外键约束。

步骤二:使用ALTER TABLE添加外键约束

完成了以上步骤后,我们需要使用ALTER TABLE语句来添加外键约束。这个约束指向"Customers"表中的"CustomerID"字段,确保"Orders"表中的"CustomerID"字段中只包含符合要求的值。

ALTER TABLE Orders ADD FOREIGN KEY(CustomerID) REFERENCES Customers(CustomerID);

以上代码使用ALTER TABLE语句来添加一个FOREIGN KEY约束。该约束用于将"Orders"表中的"CustomerID"字段连接到"Customers"表中的"CustomerID"字段,从而创建一个外键关系。

步骤三:验证外键约束

验证外键约束是否有效,可以使用以下语句:

EXEC sp_helpconstraint 'Orders';

以上语句可以显示与"Orders"表关联的所有约束。

在MS SQL中,如果试图在"Orders"表中插入一个"CustomerID"值,而该值不存在于"Customers"表中,则会产生一个约束错误,如下所示:

INSERT INTO Orders(OrderID, OrderDate, CustomerID)

VALUES(1, '2022-01-01', 100);

The INSERT statement conflicted with the FOREIGN KEY constraint "FK__Orders__Custome__286302EC". The conflict occurred in database "Test", table "dbo.Customers", column 'CustomerID'.

在以上示例中,我们试图将一个值为100的"CustomerID"插入到"Orders"表中,但"Customers"表中并没有这个值。这里就会产生一个约束错误。

总结

MS SQL中添加外键,可以通过ALTER TABLE语句来完成。这里需要完成三个步骤:首先创建两张相关联的表,其次使用ALTER TABLE语句添加FOREIGN KEY约束,最后验证外键约束是否有效。

数据库标签