MySQL三表联合插入操作的实现方法(mysql 三表关联插入)
MySQL三表联合插入操作的实现方法
在数据库中,常常需要将数据从一张表插入到另外一张表中。而有时候我们需要从多个表中取数据进行联合插入到表中。这时候,MySQL中就可以使用三表联合插入操作来实现。本文将介绍MySQL三表联合插入操作的实现方法。
实现步骤:
1.创建三张表
我们需要创建三张表,分别是:`t_user_info`、`t_user_order`、`t_order_goods`。
“`sql
CREATE TABLE `t_user_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(100) NOT NULL COMMENT ‘用户名’,
`mobile` varchar(50) DEFAULT NULL COMMENT ‘手机号’,
`address` varchar(100) DEFAULT NULL COMMENT ‘地址’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `t_user_order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL COMMENT ‘用户ID’,
`order_no` varchar(100) NOT NULL COMMENT ‘订单号’,
`order_price` decimal(10,2) NOT NULL COMMENT ‘订单金额’,
`pay_time` datetime DEFAULT NULL COMMENT ‘支付时间’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `t_order_goods` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_id` int(11) NOT NULL COMMENT ‘订单ID’,
`goods_name` varchar(100) NOT NULL COMMENT ‘商品名称’,
`goods_price` decimal(10,2) NOT NULL COMMENT ‘商品价格’,
`nums` int(11) NOT NULL COMMENT ‘购买数量’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.插入数据
插入数据时,我们需要先插入`t_user_info`表中的数据,再插入`t_user_order`表中的数据,最后插入`t_order_goods`表中的数据。这里,我们假设一个用户下了一笔订单,订单中购买了两种商品。
```sqlINSERT INTO t_user_info (username, mobile, address) VALUES ('Tom', '13812345678', '北京市朝阳区');
INSERT INTO t_user_order (user_id, order_no, order_price, pay_time) VALUES (1, '20200101001', 128.50, '2020-01-01 10:00:00');INSERT INTO t_order_goods (order_id, goods_name, goods_price, nums) VALUES (1, '商品A', 58.50, 2);
INSERT INTO t_order_goods (order_id, goods_name, goods_price, nums) VALUES (1, '商品B', 35.00, 1);
3.三表联合插入
三表联合插入操作的实现方法,就是将三张表的插入语句合并到一起,并用`SELECT`语句将插入的数据查询出来。这里,我们使用MySQL中的`last_insert_id()`函数来获取插入数据的最后一条记录的ID。
“`sql
INSERT INTO t_user_info (username, mobile, address) VALUES (‘Jerry’, ‘13912345678’, ‘上海市浦东新区’);
INSERT INTO t_user_order (user_id, order_no, order_price, pay_time)
SELECT LAST_INSERT_ID(), ‘20200102001’, 158.80, ‘2020-01-02 10:00:00’ FROM t_user_info WHERE username = ‘Jerry’;
INSERT INTO t_order_goods (order_id, goods_name, goods_price, nums)
SELECT LAST_INSERT_ID(), ‘商品C’, 88.80, 2 FROM t_user_order WHERE order_no = ‘20200102001’;
INSERT INTO t_order_goods (order_id, goods_name, goods_price, nums)
SELECT LAST_INSERT_ID(), ‘商品D’, 61.20, 1 FROM t_user_order WHERE order_no = ‘20200102001’;
在上述例子中,我们先对`t_user_info`表中新增一个用户Jerry;然后将该用户的ID用于新建一个订单,并将该订单的ID用于分别新建两个订单商品。
最终,我们可以使用`SELECT`语句来检查是否插入成功。
```sqlSELECT * FROM t_user_info;
SELECT * FROM t_user_order;SELECT * FROM t_order_goods;
通过以上操作,我们成功地实现了MySQL三表联合插入操作。