MySQL新增數據,存在就更新,不存在就添加

一、插入一條數據,存在就更新,不存在就更新(必須現有惟一鍵)
使用insert ignore語句:spa

insert ignore into table(col1,col2) values ('a','b');  

 

例如插入數據:code

insert ignore into user_info (last_name,first_name) values ('LeBron','James');  

 

這樣一來,若是表中已經存在last_name='LeBron'且first_name='James'的數據,就不會插入,若是沒有就會插入一條新數據。
上面的是一種用法,也能夠用 INSERT .... SELECT 來實現,這裏就不舉例了。blog

二、插入一條數據,存在就更新,不存在就插入(必須現有惟一鍵)
這種有兩種操做方法:
a、INSERT...ON DUPLICATE KEY UPDATE的使用 
若是指定了ON DUPLICATE KEY UPDATE,而且插入行後會致使在一個UNIQUE索引或PRIMARY KEY中出現重複值,則執行UPDATE。
例如,若是列a被定義爲UNIQUE,而且包含值1,則如下兩個語句具備相同的效索引

INSERT INTO table (a,b,c) VALUES (1,2,3)  ON DUPLICATE KEY UPDATE c=c+1;   
UPDATE table SET c=c+1 WHERE a=1

 

若是行做爲新記錄被插入,則受影響行的值爲1;若是原有的記錄被更新,則受影響行的值爲2。 
b、REPLACE關鍵字的使用         
使用REPLACE的最大好處就是能夠將DELETE和INSERT合二爲一,造成一個原子操做。這樣就能夠沒必要考慮在同時使用DELETE和INSERT時添加事務等複雜操做了。
在使用REPLACE時,表中必須有惟一索引,並且這個索引所在的字段不能容許空值,不然REPLACE就和INSERT徹底同樣的。
在執行REPLACE後,系統返回了所影響的行數,若是返回1,說明沒有重複的記錄,若是返回2,說明有重複記錄,系統先DELETE這條記錄,而後再INSERT這條記錄。
語法和INSERT很是的類似,以下面的REPLACE語句是插入或更新一條記錄。事務

REPLACE INTO users (id,name,age) VALUES(123, '賈斯丁比伯', 22);   
相關文章
相關標籤/搜索