MySQL联表查询案例应用
MySQL作为一款非常常用的关系型数据库,常常需要进行联表查询以获取更详细的信息。在本文中,我们将通过一个案例来介绍MySQL联表查询的应用。
案例背景
假设我们现在有两个表,一个表是商品表,包含所有商品的信息,另一个表是订单表,包含所有用户的订单信息。我们需要通过联表查询来获取每个订单对应的商品信息。
我们需要创建这两个表格并插入数据。商品表如下:
CREATE TABLE `goods` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`price` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `goods` (`id`, `name`, `price`) VALUES
(1, '手机', 2599.00),
(2, '电视', 3699.00),
(3, '笔记本电脑', 8999.00),
(4, '平板电脑', 3999.00),
(5, '数码相机', 1999.00);
订单表如下:
CREATE TABLE `orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`customer` varchar(50) NOT NULL,
`goods_id` int(11) NOT NULL,
`quantity` int(11) NOT NULL,
`total_price` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`),
CONSTRNT `goods` FOREIGN KEY (`goods_id`) REFERENCES `goods` (`id`)
);
INSERT INTO `orders` (`id`, `customer`, `goods_id`, `quantity`, `total_price`) VALUES
(1, '张三', 1, 1, 2599.00),
(2, '李四', 2, 1, 3699.00),
(3, '王五', 3, 1, 8999.00),
(4, '赵六', 1, 2, 5198.00),
(5, '孙七', 5, 1, 1999.00);
创建完成后,我们可以使用以下代码进行查询:
SELECT orders.id, orders.customer, goods.name, orders.quantity, orders.total_price
FROM orders
INNER JOIN goods
ON orders.goods_id = goods.id;
这段代码使用了INNER JOIN语句,将order表格和goods表格通过goods_id字段进行连接。然后,通过SELECT语句将需要展示的信息进行选取。
运行结果如下:
+----+----------+-----------------+----------+-------------+
| id | customer | name | quantity | total_price |
+----+----------+-----------------+----------+-------------+
| 1 | 张三 | 手机 | 1 | 2599.00 |
| 2 | 李四 | 电视 | 1 | 3699.00 |
| 3 | 王五 | 笔记本电脑 | 1 | 8999.00 |
| 4 | 赵六 | 手机 | 2 | 5198.00 |
| 5 | 孙七 | 数码相机 | 1 | 1999.00 |
+----+----------+-----------------+----------+-------------+
我们可以看到,通过联表查询,我们得到了每个订单对应的商品名称、单价、数量和总价等完整信息。
本文介绍的是一个简单的MySQL联表查询案例,但这种方法可以应用于更复杂的数据结构,通过联表查询可以避免数据冗余和重复,提高了查询的效率。如果您的数据涉及到多个表格,不妨也使用联表查询的方法。