MySQL 实现一表多表关联
在 MySQL 中,一表多表关联通过外键实现。外键是一个表中的字段,它指向另一个表中的主键。通过外键,可以建立多个表之间的关系,实现数据的关联查询。
下面介绍在 MySQL 中如何实现一表多表关联。
1. 创建主表和从表
首先创建两个表,一个作为主表,一个作为从表。
主表:
CREATE TABLE customer (
customer_id INT PRIMARY KEY,
customer_name VARCHAR(50),
customer_eml VARCHAR(50)
);
从表:
CREATE TABLE order (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
order_amount FLOAT,
FOREIGN KEY (customer_id) REFERENCES customer(customer_id)
);
在从表 order 中,customer_id 作为外键指向主表 customer 中的主键 customer_id。
2. 插入数据
在主表 customer 和从表 order 中插入数据。
主表 customer:
INSERT INTO customer (customer_id, customer_name, customer_eml)
VALUES
(1, '张三', 'zhangsan@example.com'),
(2, '李四', 'lisi@example.com'),
(3, '王五', 'wangwu@example.com');
从表 order:
INSERT INTO order (order_id, customer_id, order_date, order_amount)
VALUES
(1, 1, '2020-01-01', 100.00),
(2, 2, '2020-01-02', 200.00),
(3, 3, '2020-01-03', 300.00);
3. 查询数据
通过一表多表关联,可以查询主表和从表中的数据。
查询主表 customer:
SELECT *
FROM customer;
查询结果:
customer_id customer_name customer_eml
1 张三 zhangsan@example.com
2 李四 lisi@example.com
3 王五 wangwu@example.com
查询从表 order:
SELECT *
FROM order;
查询结果:
order_id customer_id order_date order_amount
1 1 2020-01-01 100.00
2 2 2020-01-02 200.00
3 3 2020-01-03 300.00
查询主表和从表关联后的数据:
SELECT *
FROM customer
JOIN order ON customer.customer_id = order.customer_id;
查询结果:
customer_id customer_name customer_eml order_id customer_id order_date order_amount
1 张三 zhangsan@example.com 1 1 2020-01-01 100.00
2 李四 lisi@example.com 2 2 2020-01-02 200.00
3 王五 wangwu@example.com 3 3 2020-01-03 300.00
通过 JOIN 关键字,将主表和从表按照条件关联在一起,查询出了主表和从表关联后的数据。
MySQL 中一表多表关联的实现方式,可以帮助我们更加高效地查询和管理数据。同时,外键的使用也有利于数据的一致性和完整性。