目录
插入单行数据
指定属性
省略属性列
多行插入
插入否则更新
格式
on duplicate key含义
不同行数的更改
示例
查看影响行数
语法
插入否则替换
格式
不同行数的更改
示例
插入单行数据
insert into + 表名 ( +(属性列名) ) + values (数据)
指定属性
插入的数据要和手动输入的属性名顺序对应着来:
省略属性列
需要将所有属性都插入值,并且要按照原属性列顺序来:
多行插入
只需要将数据部分以逗号的形式相连即可 -- (),()...
插入否则更新
- 如果不存在,就插入
- 如果存在(也就是发生键值冲突),就更新数值
格式
insert (into) 表名 (属性列名) values(数据) on duplicate key update 属性a=xx,属性b=xx ...
on duplicate key含义
如果存在键值冲突,就执行之后的语句
不同行数的更改
示例
我们将id设为主键后,如果再插入id=1的数据,就会发生键值冲突
- 所以,我们可以选择设置同步更新
- 可以看到,xx被成功更新为zz,且影响行数为2:
如果不存在冲突
- 自然就不会执行on duplicate key 后面的语句了
- 且影响行数为1:
查看影响行数
从上面的示例我们可以知道,影响行数的不同,对应着不同的数据情况
所以,我们可以通过行数,来知道刚刚究竟发生了怎样的操作
语法
select row_count()
插入否则替换
- 如果主键/唯一键没有出现冲突,则直接插入
- 出现冲突,先删除再插入
格式
replace (into) 表名 (属性列名) values(数据)
和insert格式相同
不同行数的更改
示例
可以看到,数据成功被替换成了qq:
并且,它很明显比插入否则更新的语法更加简洁,他俩的功能也差不多,所以一般会使用它