insert ignore
當出現主鍵或唯一索引重複之後,插入會失敗,但不會報錯,會忽略此次插入
用法:
#id爲主鍵
insert into user(id,name,age)values(1,"小華",21)
#由於主鍵衝突,這個插入將會被忽略
insert ignore into user(id,name,age)values(1,"小明",21)
replace to
當出現主鍵或唯一索引重複之後,會刪除原先的數據,並將這個新的記錄插入進去
用法:
# 由於主鍵衝突,它會刪除原先的記錄,再把這個記錄插入進來
replace into user(id,name,age)values(1,"小花",23);
on duplicate key update
當出現主鍵或唯一索引重複之後,則執行UPDATE語句
用法:
# 由於主鍵衝突,它只會執行 Update語句
insert into user(id,name,age)values(1,'傑克', 22) ON DUPLICATE KEY UPDATE name='傑克',age=22;
下面列舉幾個常用的場景
獲取記錄或初始化記錄
當記錄存在時則獲取此條記錄,當記錄不存在時,則插入記錄
# 1.先插入數據,如果有記錄將會忽略此次插入,如果沒有則插入
insert ignore into user(id,name,age)values(1,"小明",21)
# 2. 再獲取數據
select * from user where id = 1
插入記錄或更新記錄
直接使用on duplicate key update
語法就OK了
insert into user(id,name,age)values(1,'傑克', 22) ON DUPLICATE KEY UPDATE name='傑克',age=22;
新數據更新原始數據
使用replace into
語法,當新的數據產生時,用新的去替換老的,這樣數據庫中關於此主鍵只會是最新的數據
replace into user(id,name,age)values(1,"小花",23);