在 MySQL 數(shù)據(jù)庫中,有時(shí)我們需要在插入數(shù)據(jù)時(shí)判斷數(shù)據(jù)是否已經(jīng)存在。
如果數(shù)據(jù)存在,則更新數(shù)據(jù);
如果數(shù)據(jù)不存在,則插入新數(shù)據(jù)。
實(shí)現(xiàn)方法
使用 ON DUPLICATE KEY UPDATE
在 INSERT 語句后添加 ON DUPLICATE KEY UPDATE 子句可以實(shí)現(xiàn)這一需求。當(dāng)要插入的行與表中現(xiàn)有記錄的唯一索引或主鍵產(chǎn)生重復(fù)值時(shí),就會發(fā)生舊行的更新;如果插入的行數(shù)據(jù)與現(xiàn)有表中記錄的唯一索引或主鍵不重復(fù),則執(zhí)行新紀(jì)錄插入操作。
采用 “ON DUPLICATE KEY UPDATE”,查看手冊(https://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html)
示例代碼
INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3) ON DUPLICATE KEY UPDATE column2 = value4, column3 = value5;
注:主鍵: column1
使用 REPLACE INTO
REPLACE INTO 語句的功能類似于 INSERT INTO,不同之處在于:REPLACE INTO 首先嘗試將數(shù)據(jù)插入到表中,如果發(fā)現(xiàn)表中已經(jīng)有此行數(shù)據(jù)(根據(jù)主鍵或唯一索引判斷),則先刪除此行數(shù)據(jù),然后插入新數(shù)據(jù)。否則,直接插入新數(shù)據(jù)。
示例代碼:
REPLACE INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);
使用 INSERT IGNORE INTO
當(dāng)插入數(shù)據(jù)時(shí),如果數(shù)據(jù)存在,則忽略沖突的這行數(shù)據(jù)插入,其他插入正常執(zhí)行。前提條件是插入的數(shù)據(jù)字段設(shè)置了主鍵或唯一索引。文章來源:http://www.zghlxwxcb.cn/article/4.html
示例代碼:
INSERT IGNORE INTO table_name (column1, column2, column3) VALUES (value1, value2, value3)
在實(shí)際應(yīng)用中,可以根據(jù)具體需求選擇合適的方法。需要注意的是,在使用 ON DUPLICATE KEY UPDATE 和 REPLACE INTO 時(shí),要確保表中存在唯一索引或主鍵,否則可能導(dǎo)致數(shù)據(jù)重復(fù)或死鎖等問題。文章來源地址http://www.zghlxwxcb.cn/article/4.html
到此這篇關(guān)于MySQL數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)存在則更新,不存在則插入的實(shí)用方法的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!