博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用一条mysql语句插入多条数据
阅读量:5157 次
发布时间:2019-06-13

本文共 1882 字,大约阅读时间需要 6 分钟。

这篇文章主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助

 

  假如有一个数据表A:

id name title addtime

        如果需要插入n条数据 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$
time
=
time
();
$data = array(
  
array(
   
'name'
=>
'name1'
,
'title'
=>
'title1'
,
'addtime'
=>$
time
;
  
),
  
array(
   
'name'
=>
'name2'
,
'title'
=>
'title2'
,
'addtime'
=>$
time
;
  
),
  
array(
   
'name'
=>
'name3'
,
'title'
=>
'title3'
,
'addtime'
=>$
time
;
  
),
  
...
  
array(
   
'name'
=>
'nameN'
,
'title'
=>
'titleN'
,
'addtime'
=>$
time
;
  
),
   
);

   之前我的想法会是,通过数据构造多条插入语句,循环调用 。如:     

1
2
3
4
$sql1 =
"INSERT INTO `A`(`name`,`title`,`addtime`)VALUES ('name1','title1','"
.$
time
.
"')"
;
$sql2 =
"INSERT INTO `A`(`name`,`title`,`addtime`)VALUES ('name2','title2','"
.$
time
.
"')"
;
......
$sqlN =
"INSERT INTO `A`(`name`,`title`,`addtime`)VALUES ('nameN','titleN','"
.$
time
.
"')"
;

   之后发现了sql的insert语句可以一次插入多条:

1
2
3
4
5
$sql =
"INSERT INTO `A`(`name`,`title`,`addtime`)VALUES ('name1','title1','"
.$
time
.
"'),"
;
$sql .=
"('name2','title2','"
.$
time
.
"'),"
;
$sql .=
"('name3','title3','"
.$
time
.
"'),"
;
.....
$sql .=
"('nameN','titleN','"
.$
time
.
"')"
;

       通过","号将多个数据分隔开来,就可以能过一条sql操作来解决多个数据的插入,之前试验时,在插入数据条数为30的情况下,一次插入与多次插入同样数据的速度相比,一次插入快了近9倍。同时,因为插入操作只有一次,所以也类似事务操作,插入失败则全失败,插入成功则全成功,使数据的管理更加方便。所以,如果有多条数据需要插入同一个表的,尽量用这种方式。

以前插入多条数据库记录时,常这么写:

1
2
3
4
5
6
7
8
9
$b
= 14;
 
for
(
$a
=0;
$a
<100;
$a
++){
 
   
$sql
=
" INSERT INTO `roles` (`uid`,`rid`) VALUES ("
.
$a
.
","
.
$b
.
")"
;
 
   
mysql_query(
$sql
);
 
}

但这种写法效率低下,需要多次执行sql语句。如果你用过phpmyadmin导入数据,其实你会发现,上面的语句其实可以这么写

1
2
INSERT
INTO
`roles` (`uid`,`rid`)
VALUES
    
(534,14),(535,14),(536,14),(537,14),(539,14)

所以原来的代码可以这么改写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$b
= 14;
 
for
(
$a
=0;
$a
<100;
$a
++){
 
  
if
(
$a
==0)
 
     
$sql
=
"INSERT INTO `roles` (`uid`,`rid`) VALUES ("
.
$a
.
","
.
$b
.
")"
;
 
  
else
 
    
$sql
. =
",("
.
$a
.
","
.
$b
.
")"
;
 
}
 
mysql_query(
$sql
);

转载于:https://www.cnblogs.com/favana/p/5163872.html

你可能感兴趣的文章
Hello,world!
查看>>
浅谈HTTP中Get与Post的区别
查看>>
机器学习索引贴(未分类)
查看>>
【计算机算法设计与分析】——NP
查看>>
django 取model字段的verbose_name值
查看>>
Django 玩转API
查看>>
mysql 常用配置
查看>>
递归算法
查看>>
http://kb.cnblogs.com/a/1540021/ 赋值
查看>>
4、python内置类型(0529)
查看>>
阻止默认滚轮事件
查看>>
java-小组项目-需求视频
查看>>
R语言之简单回归分析
查看>>
年中团建之军训-回顾
查看>>
BZOJ3598 SCOI2014方伯伯的商场之旅(数位dp)
查看>>
显示器
查看>>
对文件 I/O,标准 I/O 的缓冲的理解
查看>>
Qt——绘图
查看>>
gbk,utf-8,unicode编码,单位换算
查看>>
离散数学 求偏序集中的极大元和极小元
查看>>