现在我们有一个最简单的数据表 student,只有两个字段,主键不自增
字段名 | 类型 | 说明 |
---|---|---|
id | int | primary key 主键 |
name | varchar | 无 姓名 |
现在我们要插入多条数据,常理就是:
insert into student value(1,"Lucy");
insert into student value(2,"Jack");
insert into student value(3,"Katy");
但是生产环境中数据量过多,循环插入肯定会影响性能,mysql提供了一个很cool的语法,可以批量插入,大白话,传入”数组” 请注意区分关键字,后者是 values ,前者一条一条的插入是value;
insert into student values(4,"Lily"),(5,"Arya"),(6,"Sansa");
--下面是插入成功的提示信息
--Query OK, 3 rows affected (0.06 sec)
--Records: 3 Duplicates: 0 Warnings: 0
但是批量插入如果有重复的值呢?
这时候需要用到新的语法了,关键字 on duplicate key update
insert into student(id,name) values(4,"Lilyy"),(5,"AryaStark"),(7,"Imp") on duplicate key update name=values(name) ;
--抱歉 最后这个关键字是values 我写成了 value 今天才发现错误
其他待研究的是 on duplicate key update , ignore,以及 replace …三个关键字的用法….
相关:
stackoverflow: Example
to be continued