欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql ON DUPLICATE KEY UPDATE語句示例

 更新時間:2013年11月05日 15:19:05   作者:  
本文介紹一下關于mysql中INSERT INTO… ON DUPLICATE KEY UPDATE用法
MySQL 自4.1版以后開始支持INSERT … ON DUPLICATE KEY UPDATE語法,使得原本需要執(zhí)行3條SQL語句(SELECT,INSERT,UPDATE),縮減為1條語句即可完成。
例如ipstats表結構如下:
復制代碼 代碼如下:

CREATE TABLE ipstats (
ip VARCHAR(15) NOT NULL UNIQUE,
clicks SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'
);
 

原本需要執(zhí)行3條SQL語句,如下:
復制代碼 代碼如下:

IF (SELECT * FROM ipstats WHERE ip='192.168.0.1') {
    UPDATE ipstats SET clicks=clicks+1 WHERE ip='192.168.0.1';
} else {
    INSERT INTO ipstats (ip, clicks) VALUES ('192.168.0.1', 1);
}
 

而現(xiàn)在只需下面1條SQL語句即可完成:
復制代碼 代碼如下:

INSERT INTO ipstats VALUES('192.168.0.1', 1) ON DUPLICATE KEY UPDATE clicks=clicks+1;
 

注意,要使用這條語句,前提條件是這個表必須有一個唯一索引或主鍵。
 總結如下:
1.如果表中不存在主鍵記錄,replace和insert*update都與insert是一樣的特點。
2.如 果表中存在主鍵記錄,replace相當于執(zhí)行delete 和 insert兩條操作,而insert*update的相當于執(zhí)行if exist do update else do insert操作。因此,如果replace填充的字段不全,則會導致未被更新的字段都會修改為默認值,并且如果有自增id的話,自增id會變化為最新的 值(這樣如果是以自增id為標志的話可能導致記錄丟失);而insert*update只是更新部分字段,對于未被更新的字段不會變化(不會強制修改為默 認值)。
 多條記錄操作:
復制代碼 代碼如下:

insert into t(a,b,c) values ('a1','b1','c1'),('a2','b2','c2')
on duplicate key update t.c=values(t.c)

相關文章

  • MySQL數(shù)據(jù)庫存儲引擎介紹及數(shù)據(jù)庫的操作詳解

    MySQL數(shù)據(jù)庫存儲引擎介紹及數(shù)據(jù)庫的操作詳解

    mysql面試中最常問的問題之一:小伙子,你說一下你們公司用的存儲引擎,以及你知道有哪些存儲引擎和他們之間的區(qū)別? 所以下面這篇文章主要給大家介紹了關于Mysql存儲引擎的相關資料,需要的朋友可以參考下
    2022-08-08
  • CentOS系統(tǒng)下如何設置mysql每天自動備份

    CentOS系統(tǒng)下如何設置mysql每天自動備份

    備份是容災的基礎,是指為防止系統(tǒng)出現(xiàn)操作失誤或系統(tǒng)故障導致數(shù)據(jù)丟失,而將全部或部分數(shù)據(jù)集合從應用主機的硬盤或陣列復制到其它的存儲介質的過程。本文將詳細介紹在CentOS系統(tǒng)下如何設置mysql每天自動備份,有需要的朋友們下面來一起看看吧。
    2016-10-10
  • 高性能MySQL讀書筆記 找出誰持有鎖

    高性能MySQL讀書筆記 找出誰持有鎖

    周末重讀了一遍《高性能MySQL》,發(fā)現(xiàn)有些知識點看過便忘了,沒有實際動手操作一遍就是記不牢,所以今天動手操作了一下“找出誰持有鎖”,并把實驗步驟記錄下來,有興趣的網友可以參照一二。
    2011-01-01
  • mysql入門之1小時學會MySQL基礎

    mysql入門之1小時學會MySQL基礎

    今天剛好看到了SYZ01的這篇mysql入門文章,感覺對于想學習mysql的朋友是個不錯的資料,腳本之家特分享一下,需要的朋友可以參考下
    2018-01-01
  • Mysql數(shù)據(jù)庫中子查詢的使用

    Mysql數(shù)據(jù)庫中子查詢的使用

    本文給大家分享mysql數(shù)據(jù)庫中子查詢的使用,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-10-10
  • wamp中mysql安裝時能啟動重啟后無法啟動的解決辦法

    wamp中mysql安裝時能啟動重啟后無法啟動的解決辦法

    這篇文章主要介紹了wamp中mysql安裝時能啟動重啟后無法啟動的解決辦法 ,需要的朋友可以參考下
    2018-08-08
  • 以Centos為例講解MySQL在Linux中的部署

    以Centos為例講解MySQL在Linux中的部署

    這篇文章主要介紹了以Centos為例講解MySQL在Linux中的部署,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • 面試中老生常談的MySQL問答集錦夯實基礎

    面試中老生常談的MySQL問答集錦夯實基礎

    這篇文章主要為大家介紹了面試中老生常談的MySQL問答集錦,不僅可以幫助大家順利通過面試更可以夯實大家的基礎,有需要的朋友可以借鑒參考下
    2022-03-03
  • RHEL6.5編譯安裝MySQL5.6.26教程

    RHEL6.5編譯安裝MySQL5.6.26教程

    這篇文章主要介紹了RHEL6.5編譯安裝MySQL5.6.26教程的相關資料,需要的朋友可以參考下
    2015-10-10
  • Mysql5 字符集編碼問題解決

    Mysql5 字符集編碼問題解決

    mysql 創(chuàng)建 數(shù)據(jù)庫時指定編碼很重要,很多開發(fā)者都使用了默認編碼,但是我使用的經驗來看,制定數(shù)據(jù)庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。
    2009-10-10

最新評論