暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

Coding Big Tree 2022-06-11
65

高级数据操作-新增数据

多数据插入

只要写一次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.需要注意主键冲突


文章转载自Coding Big Tree,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论