MySQL批量插入多个表并使用LAST_INSERT_ID()函数进行操作
在本文中,我们将介绍MySQL中如何使用批量插入和LAST_INSERT_ID()函数操作多个表的方法。
阅读更多:MySQL 教程
批量插入
批量插入是MySQL中一种高效的插入方式,它可以通过一次SQL语句执行多个插入操作,从而大大提高插入速度。在MySQL中,支持使用INSERT语句进行批量插入,语法如下:
INSERT INTO table_name(column1, column2, ...) VALUES(value1, value2, ...), (value3, value4, ...), ...;
其中,table_name为需要插入数据的表名,column1、column2等为需要插入数据的列名,VALUES后面的value1、value2等为需要插入的具体数据,多个数据使用逗号隔开,多个插入操作使用分号隔开。
举个例子,我们需要往一个students表里插入三条数据,具体数据如下:
| id | name | age | gender |
|---|---|---|---|
| 1 | Tom | 18 | male |
| 2 | Jerry | 19 | female |
| 3 | Benjamin | 20 | male |
我们可以使用如下SQL语句进行批量插入:
INSERT INTO students(id, name, age, gender) VALUES(1, 'Tom', 18, 'male'), (2, 'Jerry', 19, 'female'), (3, 'Benjamin', 20, 'male');
LAST_INSERT_ID()函数
LAST_INSERT_ID()函数是MySQL中一个非常有用的函数,它可以返回上一次插入操作中自动产生的、或者被手动指定的主键值。一般情况下,我们在使用AUTO_INCREMENT关键字为主键设置自增长值时,可以使用该函数轻松获取当前插入操作的主键值。
下面是一个示例,我们创建了一个departments表和一个employees表,其中departments表中包含部门信息,employees表中包含员工信息,每个员工必须分配到一个部门中。具体表结构和示例数据如下:
departments表:
| id | name |
|---|---|
| 1 | Tech |
| 2 | Marketing |
| 3 | Finance |
employees表:
| id | name | age | department_id |
|---|---|---|---|
| 1 | Alice | 25 | 1 |
| 2 | Bob | 27 | 2 |
| 3 | Charlie | 30 | 1 |
| 4 | David | 22 | 3 |
我们现在需要向这两个表中插入一些新的数据,其中employees表中每个新员工的department_id需要引用departments表中的id。可以使用以下SQL语句实现:
INSERT INTO departments(name) VALUES('Sales'), ('HR'), ('Operations');
INSERT INTO employees(name, age, department_id) VALUES('Emma', 24, LAST_INSERT_ID()), ('Frank', 29, LAST_INSERT_ID()), ('Grace', 26, LAST_INSERT_ID());
第一条语句向departments表中插入了三个新的部门信息,同时使用LAST_INSERT_ID()函数返回了这三个操作中最后一次插入的主键值。
第二条语句通过使用LAST_INSERT_ID()函数在employees表中插入了三个新的员工信息,其中每个员工的department_id引用了上一次插入的departments表中的id值。
总结
本文介绍了MySQL中批量插入和LAST_INSERT_ID()函数的基本用法,希望对您有所帮助。在实际工作中,可以根据具体需求灵活运用这些技巧,提高SQL语句的执行效率。
极客笔记