国强极客
有问题请加微信:guoqiang7585
国强极客

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

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

10.1.同时插入多行记录

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

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.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.4.蠕虫复制

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

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

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

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

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

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

插入一个数据(其主键已经存在的情形):

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

办法1:忽略

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

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

办法2:替换

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

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

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

办法3:更新

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

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

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

赞赏
对内容有疑问,请加我微信:guoqiang7585
# # # #
首页      全栈教程      mysql      10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突

国强极客

文章作者

博客站长,有问题请加微信【guoqiang7585】。

国强极客

10.mysql高级插入 插入多行 插入查询结果 蠕虫复制 主键冲突
10.1.同时插入多行记录 insert into 表名(字段1,字段2,...) values (值1,值2,... ), (值1, 值2,... ), ......; 10.2.插入查询的结果数据 就是将一个select语句的查询结果,插…
扫描二维码继续阅读
2019-12-06