记录不存在就插入,存在就更新

id empno ip
1 3306 192.168.0.103
2 8080 192.168.0.104
3 22 192.168.0.105
4 443 192.168.0.106
INSERT INTO demo.t_emp_ip (empno, ip)
VALUES (8080, '192.168.0.104')

INSERT INTO demo.t_emp_ip (empno, ip)
VALUES (8080, '192.168.0.104')
ON DUPLICATE KEY UPDATE ip=VALUES(ip);

在结尾加上一个叫做ON DUPLICATE KEY UPDATE的子句,这个子句会让MySQL自动判断要插入的记录是不是违反了主键约束或者唯一性约束,换个意思就是说写入的数据在数据表里边是不是已经存在了?如果存在了,那么我们就去更新数据,如果不存在我们就去写入数据。那么在子句里边,我们看后边的表达式是把最新的 IP更新到已经存在记录了IP字段上,这样子就完成了数据的更新。当然了如果写入的数据在数据表里边存在,那么因此的语句该写入还是正常写入的。