多条SQL语句一次性插入的几种方法
多条SQL语句一次性插入的几种方法相信不少朋友在写SQL的时候都遇到过这样的场景手里有一堆数据想一次性塞进数据库表里但一条一条INSERT太慢了怎么办如果你是像我这样喜欢“偷懒”的工程师自然会琢磨有没有什么办法能一次性把多条数据整进去既高效又优雅今天我们就来抽丝剥茧把这个问题掰开揉碎了讲清楚。我会用工程视角带你一步步搞懂几种常用的批量插入方法。准备好了吗那就花5分钟跟着我的思路走一遍吧第一种利用INSERT SELECT语句向表中添加数据这个方法你可以理解成**“搬家”**——把一张旧表里的数据搬到一张新表里。关键点新表比如test_2必须提前“装修好”也就是已经存在而且它的列的数据类型、数量和顺序必须和旧表test一一对应就像搬家时每个箱子都要对上房间的编号一样。举个例子INSERTINTOtest_2(name)SELECTnameFROMtest;这里就是把test表里的name列全部搬到test_2表的name列里。简单吧第二种使用SELECT INTO语句将数据添加到新表中这个方法就有点**“凭空造表”的意思了。执行查询的时候系统会自动创建一张新表所以这张表不能事先存在**否则会报错。类比一下你手里有一堆零件数据想组装成一个新柜子新表那这个柜子肯定不能提前摆在那里对吧来看代码SELECTname,age,sexINTOstudent_2FROMstudent;这条语句会直接从student表里选出name、age、sex三列数据然后自动创建一张叫student_2的新表并把数据塞进去。是不是很省事第三种通过UNION关键字合并数据进行插入这个方法适合手动拼数据的场景。你可以把UNION想象成**“拼接积木”**——把几段独立的“数据块”拼成一条完整的记录然后一次性插入。注意拼接的时候每一段数据的数量、顺序和类型必须保持一致就像拼乐高每一块的接口必须对得上。看例子INSERTINTOtest(column_name)SELECTaaUNIONSELECTbbUNIONSELECTcc;这里就是先把aa、bb、cc三条数据通过UNION合并成一个结果集然后一次性插入到test表的column_name列中。小提问如果我想插入多列数据该怎么办没错把SELECT里的内容扩展成多列就行了比如SELECT aa, 1 UNION SELECT bb, 2。是不是很好理解最后关于插入标识列的处理有时候我们往新表里插数据还希望自动生成一个自增编号比如ID这时候就需要用到IDENTITY函数了。你可以把它理解成**“自动发号机”**——每插入一条数据就自动生成一个递增的序号。语法如下SELECTIDENTITY(int,1,1)INTOnew_tableFROMoriginal_table;这里的int是数据类型1, 1表示从1开始每次增加1。来个完整的例子SELECTIDENTITY(int,1,1)ASid,nameINTOtest_2FROMtest;这条语句会从test表里选出name列同时自动生成一个从1开始的id列然后一起存入新表test_2中。一步到位省心省力好了以上就是几种常见的批量插入方法。是不是感觉思路清晰多了从“搬家”到“造表”再到“拼积木”和“自动发号”每一种方法都有自己的适用场景。想用好SQL的朋友都需要通盘搞清这些技巧才能在实际开发中做到手中有剑心里不慌如果你觉得这种方式还不错那就动手试试吧把上面的例子跑一遍相信我你会有新的收获学SQL光看不动手可不行练才是王道全套SQL学习资源资料练习视频一步到位强烈安利这个自学网站 SQL自学网 http://xuesql.cn入门首选零基础也能轻松上手https://www.w3schools.com