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
文法,當新的資料産生時,用新的去替換老的,這樣資料庫中關于此主鍵隻會是最新的資料