ITPub博客

首页 > 数据治理 > 数据治理 > 多条SQL语句一次性插入的几种方法

多条SQL语句一次性插入的几种方法

原创 数据治理 作者:lanjinwei 时间:2026-07-07 08:14:55 0 删除 编辑

多条SQL语句一次性插入的几种方法

相信不少朋友在写SQL的时候,都遇到过这样的场景: 手里有一堆数据,想一次性塞进数据库表里,但一条一条INSERT太慢了,怎么办? 如果你是像我这样喜欢“偷懒”的工程师,自然会琢磨:有没有什么办法,能一次性把多条数据整进去,既高效又优雅?

今天我们就来 抽丝剥茧,把这个问题掰开揉碎了讲清楚。我会用 工程视角,带你一步步搞懂几种常用的批量插入方法。准备好了吗?那就花5分钟跟着我的思路走一遍吧!

3d35948149ea.png


第一种:利用 INSERT SELECT 语句向表中添加数据

这个方法,你可以理解成 “搬家”——把一张旧表里的数据,搬到一张新表里。

关键点:新表(比如 test_2)必须提前“装修好”,也就是已经存在,而且它的列的数据类型、数量和顺序,必须和旧表( test) 一一对应,就像搬家时每个箱子都要对上房间的编号一样。

举个例子:

INSERT INTO test_2(name)
SELECT name
FROM test;

这里就是把 test 表里的 name 列,全部搬到 test_2 表的 name 列里。简单吧?


第二种:使用 SELECT INTO 语句将数据添加到新表中

这个方法就有点 “凭空造表”的意思了。执行查询的时候,系统会自动创建一张新表,所以这张表 不能事先存在,否则会报错。

类比一下:你手里有一堆零件(数据),想组装成一个新柜子(新表),那这个柜子肯定不能提前摆在那里,对吧?

来看代码:

SELECT name, age, sex
INTO student_2
FROM student;

这条语句会直接从 student 表里选出 name、 age、 sex 三列数据,然后 自动创建一张叫 student_2 的新表,并把数据塞进去。是不是很省事?


第三种:通过 UNION 关键字合并数据进行插入

这个方法适合 手动拼数据的场景。你可以把 UNION 想象成 “拼接积木”——把几段独立的“数据块”拼成一条完整的记录,然后一次性插入。

注意:拼接的时候,每一段数据的数量、顺序和类型必须保持一致,就像拼乐高,每一块的接口必须对得上。

看例子:

INSERT INTO test(column_name)
SELECT 'aa' UNION
SELECT 'bb' UNION
SELECT 'cc';

这里就是先把 'aa'、 'bb'、 'cc' 三条数据通过 UNION 合并成一个结果集,然后一次性插入到 test 表的 column_name 列中。

小提问:如果我想插入多列数据,该怎么办?没错,把 SELECT 里的内容扩展成多列就行了,比如 SELECT 'aa', 1 UNION SELECT 'bb', 2。是不是很好理解?


最后,关于插入标识列的处理

有时候我们往新表里插数据,还希望自动生成一个 自增编号(比如ID),这时候就需要用到 IDENTITY 函数了。

你可以把它理解成 “自动发号机”——每插入一条数据,就自动生成一个递增的序号。

语法如下:

SELECT IDENTITY(int, 1, 1)
INTO new_table
FROM original_table;

这里的 int 是数据类型, 1, 1 表示从1开始,每次增加1。

来个完整的例子:

SELECT IDENTITY(int, 1, 1) AS id, name
INTO test_2
FROM test;

这条语句会从 test 表里选出 name 列,同时自动生成一个从1开始的 id 列,然后一起存入新表 test_2 中。 一步到位,省心省力!


好了,以上就是几种常见的批量插入方法。是不是感觉思路清晰多了? 从“搬家”到“造表”,再到“拼积木”和“自动发号”,每一种方法都有自己的适用场景。

想用好SQL的朋友,都需要通盘搞清这些技巧,才能在实际开发中做到 手中有剑,心里不慌!

如果你觉得这种方式还不错,那就动手试试吧,把上面的例子跑一遍,相信我,你会有新的收获!


学SQL,光看不动手可不行,练才是王道!

全套SQL学习资源:资料+练习+视频,一步到位!强烈安利这个自学网站👉🏻 SQL自学网 http://xuesql.cn 入门首选,零基础也能轻松上手: https://www.w3schools.com

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70049428/viewspace-3175328/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2026-01-27

  • 博文量
    10
  • 访问量
    10797