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`表中的数据。这里,我们假设一个用户下了一笔订单,订单中购买了两种商品。

```sql
INSERT 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`语句来检查是否插入成功。

```sql
SELECT * FROM t_user_info;
SELECT * FROM t_user_order;
SELECT * FROM t_order_goods;

通过以上操作,我们成功地实现了MySQL三表联合插入操作。


数据运维技术 » MySQL三表联合插入操作的实现方法(mysql 三表关联插入)