服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL数据库高级数据操作之新增数据

MySQL数据库高级数据操作之新增数据

2022-11-03 16:06彭世瑜 Mysql

这篇文章主要介绍了MySQL数据库高级数据操作之新增数据,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

多数据插入

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

基本语法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 | 王五   |
+----+--------+

主键冲突

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

1、主键冲突更新

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

?
1
2
3
4
5
6
7
8
9
10
11
12
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、主键冲突替换

?
1
2
3
4
5
6
7
8
9
10
replace into 表名 [(字段列表)] values (值列表);
replace into  my_student (id, name) values (1, '刘备');
mysql> select * from my_student;
+----+--------+
| id | name   |
+----+--------+
|  1 | 刘备   |
|  2 | 李四   |
|  3 | 王五   |
+----+--------+

蠕虫复制

一分为二,成倍增加

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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 | 王五   |
+----+--------+

注意:

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

到此这篇关于MySQL数据库高级数据操作之新增数据的文章就介绍到这了,更多相关MySQL新增数据内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.51cto.com/u_13567403/5335277

延伸 · 阅读

精彩推荐