已创建成功的数据表 b 数据信息如下:
| filed | type | null | key | … |
|---|---|---|---|---|
| id | int(10) | yes | - | … |
| name | varchar(20) | yes | - | … |
| user_id | int(15) | no | pri | … |
- 预先插入一条记录
insert into b values(1,'张三',10);
下面的操作都在此基础上进行
1.insert into
插入主键重复数据会报错
insert into b values(2,'李四',10);
ERROR 1062 (23000): Duplicate entry ‘10’ for key ‘PRIMARY’;
由于新插入数据的主键列user_id与已存数据重复,所以报错,无法成功插入。
2.replace into
插入主键重复数据会替换原数据
replace into b values(2,'李四',10);
- select * from b:
| id | name | user_id |
|---|---|---|
| 2 | 李四 | 10 |
与新数据相同主键列的记录已经被整条替换
3.insert ignore into
插入主键重复数据会忽略当前插入的新数据
insert ignore into b values(2,'王五',10);
- select * from b:
| id | name | user_id |
|---|---|---|
| 2 | 李四 | 10 |
可以看到表中数据没有发生改变,新插入的数据被忽略掉了。
本文介绍了MySQL中的三种插入语句:insert into、replace into和insert ignore into。当尝试插入主键重复数据时,insert into会导致错误,replace into会替换原有数据,而insert ignore into则会忽略新数据,保持原有数据不变。

8522

被折叠的 条评论
为什么被折叠?



