第一种 ON DUPLICATE KEY UPDATE
INSERT INTO test_unique(uid,username,upassword) VALUES (NULL,‘1006’,‘135’) ON DUPLICATE KEY UPDATE username=VALUES(username);
on duplicate 更新对主键索引没有影响.因此对索引的维护成本就低了一些(比 REPLACE 快一些)
第二种 IGNORE
INSERT IGNORE INTO test_unique(uid,username,upassword) VALUES (NULL,‘1008’,‘135’);
//实现数据的差分插入,但是会占用一个主键值。即某一条由于数据已经存在,
而没有插入进去,但是此插入动作本应占据的主键却不会因为数据没有插入而不被占用。
第三种 REPLACE
REPLACE INTO test_unique(uid,username,upassword) VALUES (NULL,‘1009’,‘135’);
//要插入的数据如果存在的话,他会先删除已经存在的重复值,而后进行插入,但是如果不存在的话,他会直接插入和普通的inset一样。