mysql 怎么用insert批量插入数据

发布网友 发布时间:2022-04-22 01:39

我来回答

3个回答

热心网友 时间:2022-04-08 05:02

一次插入多行数据
insert
into
表名[(字段列表)]
values(值列表1),(值列表2),...(值列表n);
例如:
insert
into
students(sid,sname,dob)
values
('001','张三','2001-02-03'),
('002','李四','2002-02-03'),
('003','王五','2003-02-03');
将一张表或查询中的数据插入到另一张表里
insert
into
表名(字段列表)
select
(字段列表)
from
源表
where
筛选表达式;
例如将表2中的记录全部插入到表1,假设它们的结构一样
insert
into
表1(*)
select
*
from
表2;

热心网友 时间:2022-04-08 06:20

这就是自己实现一个id自增的东西。
比如的你有个公用类专门用来生成后面的数字,所有需要用到的方法都调用这个类的一个方法我们就叫它nextid吧,只要这个方法是线程安全的就可以了。
itils.nextid()
int
nextid()
{
lock(this){
return
this.id++;
}
}
应用启动的时候从数据库查询一下id的最大值并设置给工具类的id,让它接着增长就行了。
具体实现看你用什么语言。
请仔细阅读别人回答的是什么意思。想想oracle的sequence的实现,是不是类似?

热心网友 时间:2022-04-08 07:54

加锁情况与死锁原因分析

为方便大家复现,完整表结构和数据如下:

CREATE TABLE `t3` (
`c1` int(11) NOT NULL AUTO_INCREMENT,
`c2` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`),
UNIQUE KEY `c2` (`c2`)
) ENGINE=InnoDB

insert into t3 values(1,1),(15,15),(20,20);


在 session1 执行 commit 的瞬间,我们会看到 session2、session3 的其中一个报死锁。这个死锁是这样产生的:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com