MySQL数据替换

一、REPLACE

它是SQL标准的一个MYSQL扩展。

eg.     REPLACE INTO admin VALUES (7,'admin3',123,'管理员账号',1,'');

225204_fcR6_2413228.png

第一次执行,MySQL提示影响了一行因为之前记录不存在,仅插入了一条新的记录。

再执行数次,显示还是受影响一行(个人猜想,在数据不变的情况下,REPLACE 替换了原先的数据,所以执行显示,受影响行数还是1)

REPLACE INTO admin VALUES (7,'admin9',123,'管理员账号',1,'')

225837_pa5E_2413228.png

修改部分数据后,再次执行。显示受影响行数为2。

因为REPLACE执行顺序是,先删除旧的数据,再重新插入一行新的数据,这样,受影响行数就为2了。

注意:REPLACE 不能用where 来指定更新记录。

REPLACE INTO admin SET id=7,TrueName='管理员账号9'

230409_W0lv_2413228.png

有一个比较叼的问题,就是如果只指定了部分的栏目而使用REPLACE的话,REPLACE会立即删除存在的行,然后重新插入该行,但仅存在id和TrueName值。

 

二、 INSERT INTO ...ON DUPLICATE KEY UPDATE

e.g:INSERT INTO admin VALUES (7,'admin2',123,'管理员账号',1,'')
ON DUPLICATE KEY UPDATE id=7,UserName='admin',TrueName='管理员账号2',AdminGroup=1;

第一次执行,显示受影响行数为1。很明显,因为数据库不存在,所以新插入了一行。

232115_PGlo_2413228.png

第二次执行,显示受影响行数为2,。可以的知,如果数据已经存在,但是数据和需要修改的数据不同,所以执行了更新的操作,(具体步骤应该也是先删除,再重新插入),这时候数据表里面admin2,改为了admin,管理员账号也变为了管理员账号2。

232841_xqrB_2413228.png

第三次执行,显示受影响行数为0。因为数据与要修改的数据相同,则不执行更新操作。

另外,INSERT INTO ...ON DUPLICATE KEY UPDATE的另外一个好处是,如果只列出了部分的数据,那么只更新不同值得列。

 

 

转载于:https://my.oschina.net/u/2413228/blog/732297

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值