MySQL数据库(15):高级数据操作-新增数据

举报
彭世瑜 发表于 2022/05/28 00:48:42 2022/05/28
【摘要】 高级数据操作-新增数据 多数据插入 只要写一次insert,可以插入多条数据 基本语法 insert into 表名 [(字段列表)] values (值列表), (值列表)...; crea...

高级数据操作-新增数据

多数据插入

只要写一次insert,可以插入多条数据

基本语法

insert into 表名 [(字段列表)] values (值列表), (值列表)...;


create table my_student(
    id int primary key auto_increment,
    name varchar(10)
);

insert into my_student (name) values ('张三'), ('李四'), ('王五');

mysql> select * from my_student;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张三   |
|  2 | 李四   |
|  3 | 王五   |
+----+--------+

主键冲突

insert into my_student (id, name) values (1, '张飞');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

1、主键冲突更新

如果插入过程中主键冲突,那么采用更新方式

insert into 表名 [(字段列表)] on duplicate key update 字段=新值;

insert into my_student (id, name) values (1, '张飞') 
on duplicate key update name = '张飞';

mysql> select * from my_student;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张飞   |
|  2 | 李四   |
|  3 | 王五   |
+----+--------+

2、主键冲突替换

replace into 表名 [(字段列表)] values (值列表);

replace into  my_student (id, name) values (1, '刘备');

mysql> select * from my_student;
+----+--------+
| id | name   |
+----+--------+
|  1 | 刘备   |
|  2 | 李四   |
|  3 | 王五   |
+----+--------+

蠕虫复制

一分为二,成倍增加

从已有的数据中获取数据,并且插入到数据表中

insert into 表名 [(字段列表)] select */字段列表 from 表名;

insert into my_student (name) select name from my_student;

mysql> select * from my_student;
+----+--------+
| id | name   |
+----+--------+
|  1 | 刘备   |
|  2 | 李四   |
|  3 | 王五   |
|  4 | 刘备   |
|  5 | 李四   |
|  6 | 王五   |
+----+--------+

注意:

  1. 蠕虫复制通常是重复数据,可以短期内复制大量的数据,从而测试表的压力
  2. 需要注意主键冲突

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/124992709

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。