天天看點

MySQL中ignore,replace的使用insert ignorereplace toon duplicate key update

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了

新資料更新原始資料

使用

replace into

文法,當新的資料産生時,用新的去替換老的,這樣資料庫中關于此主鍵隻會是最新的資料

繼續閱讀