【Mysql教程】如何新增数据方法详解

所需工具:

Mysql

聪明的大脑

勤劳的双手

 

注意:本站只提供教程,不提供任何成品+工具+软件链接,仅限用于学习和研究,禁止商业用途,未经允许禁止转载/分享等

 

介绍

多数据插入
主键冲突
1、主键冲突更新
2、主键冲突替换
蠕虫复制

 

教程如下

多数据插入

只要写一次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 | 王五 |
 	+----+--------+

注意:

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

标签

发表评论