【MySQL】insert ignore ,insert replace, insert into 之間的區別

存在 不存在
insert ignore 忽略 插入
insert into 報錯 插入
replace into 替換 插入

表要求:插入的數據中存在,PrimaryKey,或者unique索引的字段;
結果:表id都會自增
replace into :替換插入的原理是:如果存在,先刪除數據,再插入一條新的記錄到表中,自增主鍵的值會增加。
INSERT IGNOR :忽略插入的原理是:如果存在,原先對應的主鍵或者唯一鍵,不管其他字段的值有無變化,之前對應的這條數據都不會變化。

# 實列
INSERT IGNORE INTO `caiwu` (`name`,`money`) VALUES('王五','200')
INSERT INTO `caiwu` (`name`,`money`) VALUES('王五','200') 
REPLACE INTO `caiwu` (`name`,`money`) VALUES('王五','200')
ALTER TABLE caiwu ADD UNIQUE KEY name_unique (`name`)

如果沒有主鍵或者唯一鍵可根據下面的sql,進行判斷更新還是操作;

INSERT INTO `caiwu` (`name`,`money`) SELECT '王五','200' FROM DUAL WHERE NOT EXISTS 
(SELECT * FROM caiwu WHERE `name` = '王五' AND `money` = 200 )
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章