亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql ON DUPLICATE KEY UPDATE語(yǔ)句示例

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

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

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

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語(yǔ)句即可完成:
復(fù)制代碼 代碼如下:

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

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

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

相關(guān)文章

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

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

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

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

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

    高性能MySQL讀書(shū)筆記 找出誰(shuí)持有鎖

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

    mysql入門(mén)之1小時(shí)學(xué)會(huì)MySQL基礎(chǔ)

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

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

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

    wamp中mysql安裝時(shí)能啟動(dòng)重啟后無(wú)法啟動(dòng)的解決辦法

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

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

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

    面試中老生常談的MySQL問(wèn)答集錦夯實(shí)基礎(chǔ)

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

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

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

    Mysql5 字符集編碼問(wèn)題解決

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

最新評(píng)論