MySQL中ignore,replace的使用

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); 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章