mysq l多表查询练习
时间: 2023-07-20 15:05:05 浏览: 59
好的,让我们来尝试一下多表查询的练习。
假设我们有两个表:`orders`和`customers`。`orders`表包含订单信息,`customers`表包含客户信息。这两个表通过`customer_id`字段进行关联。
首先,我们可以使用以下语句创建这两个表:
```sql
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
order_date DATE,
total_amount DECIMAL(10,2)
);
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50),
phone VARCHAR(20)
);
```
然后,我们可以向这两个表中插入一些示例数据:
```sql
INSERT INTO customers (id, name, email, phone) VALUES
(1, 'Alice', 'alice@example.com', '123-456-7890'),
(2, 'Bob', 'bob@example.com', '555-555-5555'),
(3, 'Charlie', 'charlie@example.com', '987-654-3210');
INSERT INTO orders (id, customer_id, order_date, total_amount) VALUES
(1, 1, '2021-01-01', 100.00),
(2, 1, '2021-02-01', 200.00),
(3, 2, '2021-03-01', 300.00),
(4, 3, '2021-04-01', 400.00),
(5, 3, '2021-05-01', 500.00);
```
现在,我们可以使用以下查询来获取每个客户的总订单金额:
```sql
SELECT customers.name, SUM(orders.total_amount) as total_spent
FROM customers
JOIN orders ON customers.id = orders.customer_id
GROUP BY customers.id;
```
这个查询使用了`JOIN`语句将`customers`表和`orders`表连接起来,并使用`GROUP BY`语句按客户分组,然后计算每个客户的总订单金额。
输出结果应该如下所示:
```
+---------+-------------+
| name | total_spent |
+---------+-------------+
| Alice | 300.00 |
| Bob | 300.00 |
| Charlie | 900.00 |
+---------+-------------+
```
希望这个练习对你有所帮助!