1. SQL外键介绍
外键(Foreign key)是用来建立不同表之间的联系的关键字,它建立在表与表之间,将一个表中的字段与另一个表中的字段进行联系。使用外键可以提高查询效率,避免数据冗余,使数据库更加规范化,避免数据的重复,具有更高的数据完整性。
2. 如何创建外键
在MSSQL中,可以通过以下步骤创建外键:
2.1 创建外键表
首先需要创建外键表,也就是需要引用其他表中的数据的表。比如,创建一个订单表Order,该表需要引用另一个表Product中的数据,则需要先创建Product表。
CREATE TABLE Product
(
ProductID int NOT NULL PRIMARY KEY,
ProductName varchar(50) NOT NULL,
Price money NOT NULL
)
上述代码创建了一个Product表,并设置了ProductID为主键。
2.2 创建主键表
接下来需要创建主键表,也就是被外键表所引用的表。比如,创建一个订单表Order,该表引用Product表,则需要先创建Order表。
CREATE TABLE Order
(
OrderID int NOT NULL PRIMARY KEY,
OrderDate datetime NOT NULL,
ProductID int NOT NULL,
FOREIGN KEY (ProductID) REFERENCES Product(ProductID)
)
上述代码创建了一个Order表,其中ProductID为外键,它引用了Product表中的ProductID字段。
2.3 插入数据
在创建完毕主键表和外键表后,需要向这两个表中插入数据。以下是插入数据的示例代码:
INSERT INTO Product (ProductID, ProductName, Price)
VALUES
(1, 'Product A', 100.00),
(2, 'Product B', 200.00),
(3, 'Product C', 300.00),
(4, 'Product D', 400.00)
INSERT INTO Order (OrderID, OrderDate, ProductID)
VALUES
(1, '2021-01-01', 1),
(2, '2021-02-01', 2),
(3, '2021-03-01', 3),
(4, '2021-04-01', 4)
上述代码向Product表和Order表中插入了数据。
2.4 查询数据
此时可以通过以下语句查询Order表中的数据:
SELECT * FROM Order
上述语句会返回Order表中的所有数据,其中ProductID列为外键列。可以通过以下语句连接Product表和Order表,查询Product表中的ProductID、ProductName和Price:
SELECT Product.ProductID, Product.ProductName, Product.Price
FROM Product
INNER JOIN Order
ON Product.ProductID = Order.ProductID
上述语句会返回连接后的数据,其中Product.ProductID、Product.ProductName和Product.Price分别对应Product表中的ProductID、ProductName和Price。