SQL FOREIGN KEY学习笔记
概述
在关系型数据库中,外键是用来建立两个表之间关系的一种机制。它可以确保表之间的关联性,并且可以保证数据的完整性和一致性。
创建FOREIGN KEY的方法
在创建表的时候,可以通过 FOREIGN KEY 关键字创建一个外键约束。例如:
Copy CodeCREATE 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 CodeCREATE 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 CodeCREATE 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 CodeINSERT 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 CodeINSERT INTO orders (order_id, product_id, quantity)
VALUES
(123, 1, 1),
(124, 2, 2),
(125, 4, 1); -- 这里会报错,因为产品 ID 为 4 的产品不存在于 products 表中。
这样,我们就成功地创建了一个包含外键约束的关系型数据库,并成功地插入了一些数据。