SQL FOREIGN KEY学习笔记

概述

在关系型数据库中,外键是用来建立两个表之间关系的一种机制。它可以确保表之间的关联性,并且可以保证数据的完整性和一致性。

创建FOREIGN KEY的方法

在创建表的时候,可以通过 FOREIGN KEY 关键字创建一个外键约束。例如:

Copy Code
CREATE TABLE orders ( order_id INT PRIMARY KEY, product_id INT, quantity INT, FOREIGN KEY (product_id) REFERENCES products(product_id) );

上述代码创建了一个名为 "orders" 的表,包含三个列:order_id、product_id 和 quantity。其中,主键是 order_id,外键是 product_id,它指向另一个名为 "products" 的表中的主键。

实例

我们来看一个具体的例子。假设我们有两个表:一个是 "orders" 表,另一个是 "products" 表。orders 表包含订单信息,products 表包含产品信息。我们希望在订单表中存储产品 ID,同时确保只有存在于产品表中的产品 ID 才能被插入。

首先,我们需要创建 products 表:

Copy Code
CREATE TABLE products ( product_id INT PRIMARY KEY, product_name VARCHAR(50), product_price DECIMAL(10,2) );

这里我们创建了一个名为 "products" 的表,包含三个列:product_id、product_name 和 product_price。其中,product_id 是主键。

接下来,我们来创建 orders 表:

Copy Code
CREATE TABLE orders ( order_id INT PRIMARY KEY, product_id INT, quantity INT, FOREIGN KEY (product_id) REFERENCES products(product_id) );

在这里,我们创建了一个名为 "orders" 的表,包含三个列:order_id、product_id 和 quantity。其中,order_id 是主键,product_id 是外键,它指向 products 表中的 product_id。

现在,我们可以向这两个表中插入数据。比如,我们可以向 products 表中插入一些数据:

Copy Code
INSERT INTO products (product_id, product_name, product_price) VALUES (1, 'iPhone 11', 799.00), (2, 'Macbook Pro', 1299.00), (3, 'iPad Air', 599.00);

接着,我们可以向 orders 表中插入一些订单数据:

Copy Code
INSERT INTO orders (order_id, product_id, quantity) VALUES (123, 1, 1), (124, 2, 2), (125, 4, 1); -- 这里会报错,因为产品 ID 为 4 的产品不存在于 products 表中。

这样,我们就成功地创建了一个包含外键约束的关系型数据库,并成功地插入了一些数据。