10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

2019年12月6日06:44:12 评论 61 次浏览

10.1.同时插入多行记录

insert  into 表名(字段1,字段2,...)  values (值1,值2,... ),  (值1, 值2,... ),  ......;

10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

10.2.插入查询的结果数据

就是将一个select语句的查询结果,插入到某个表中!

insert  into  表名(字段1,字段2,...)  select  (xx1,  xx2,  ...  )  ...  ;

1,插入语句的字段个数,跟select语句的字段个数相等;
2,插入语句的字段类型,跟select语句的字段类型相符;

--insert into ... select 语句:
insert into user3 (user_name, user_pass) select name, '456' as pass from user2;

10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

10.3.set语法插入数据

insert  into  表名  set  字段1=值1, 字段2=值2,....  ;

这个语法只能一次插入一行数据

insert 语句的set语法形式:
insert into user3 set user_name='user6', user_pass='123', edu=2, aihao=3 ;

10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

10.4.蠕虫复制

所谓蠕虫复制,就是针对一个表的数据,进行快速的复制并插入到所需要的表中,以期在短时间内具备“大量数据”,以用于测试或其他特殊场合,比如:

1,将一个表的大量数据,复制到另一个表中;

10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

2,将一个表的数据复制到本身表中以产生大量数据;

10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

10.5.插入时主键冲突的解决办法

所谓主键冲突是指,当插入一条记录的时候,如果插入的记录的主键值,在现有的数据中已经存在,则此时,因为主键不能重复,因此就产生了“主键冲突”。

主键冲突的演示:
现有数据:

10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

插入一个数据(其主键已经存在的情形):
10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

那如果出现主键冲突,该怎么办呢?

办法1:忽略

——终止插入,数据不改变,语句不报错。
其语法为:

insert  ignore  into  表名 ( 字段.... ) values (值.....);

10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

办法2:替换

——删除原纪录,插入新纪录。
其语法为:

replace  into   表名 ( 字段.... ) values (值.....);

说明:此replace的用法跟insert一样,也可以插入新纪录,只是如果新纪录出现主键冲突,就会删除原纪录后,再插入该新纪录。

10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

办法3:更新

——设置为去更新原有数据(而并不插入)。
语法为:

insert  into  表名 ( 字段.... ) values (值.....)  on  duplicate  key  update  XX字段=新的值;

更新类似“替换”(replace),区别是:
替换:是将新的数据完整覆盖旧的数据
更新:可以预先设定需要覆盖的旧数据

10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突
10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

继续阅读
weinxin
加我微信
微信扫一扫,加我微信好友,共同交流,共同进步! (备注:焦国强博客)
mysql 最后更新:2019-12-9
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: