最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中ON DUPLICATE key update的使用

 更新時(shí)間:2023年05月24日 15:38:51   作者:辰兮ing  
本文主要介紹了MySQL中ON DUPLICATE key update的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、主鍵索引、唯一索引和普通索引的關(guān)系

主鍵索引
在數(shù)據(jù)庫中定義一個(gè)主鍵將自動(dòng)創(chuàng)建主鍵索引,主鍵索引是唯一索引的特殊類型。主鍵索引要求主鍵中的每個(gè)值是唯一的。當(dāng)在查詢中使用主鍵索引時(shí),它還允許快速訪問數(shù)據(jù)。主鍵索引不能為空。每個(gè)表只能有一個(gè)主鍵

唯一索引
不允許兩行具有相同的索引值。但可以都為NULL。 如果現(xiàn)有數(shù)據(jù)中存在重復(fù)的鍵值,則數(shù)據(jù)庫不允許將新創(chuàng)建的唯一索引與表一起保存。當(dāng)新數(shù)據(jù)和表中的鍵值重復(fù)時(shí),數(shù)據(jù)庫會(huì)拒絕接受此數(shù)據(jù)。每個(gè)表可以有多個(gè)唯一索引

普通索引
一般的索引結(jié)構(gòu),可以在條件刪選時(shí)加快查詢效率,索引字段的值可以重復(fù),可以為空值

二、實(shí)戰(zhàn)操作

1.ON DUPLICATE key update使用介紹:

有時(shí)候由于業(yè)務(wù)需求,可能需要先去根據(jù)某一字段值查詢數(shù)據(jù)庫中是否有記錄,有則更新,沒有則插入。這個(gè)時(shí)候就可以用到ON DUPLICATE key update這個(gè)sql語句了。

2.ON DUPLICATE key update測試樣例:

首先創(chuàng)一張簡單的表:

 增加以下數(shù)據(jù):

數(shù)據(jù)包含主鍵(id):

insert into user (id,username,userpwd,num) values (1,"testName","testPwd",10)
ON DUPLICATE KEY UPDATE
username = VALUES(username),
userpwd = VALUES(userpwd)

可以看到是根據(jù)主鍵來判斷,如果主鍵重復(fù)則執(zhí)行update。

加上username為唯一索引之后:

 再次執(zhí)行

insert into user (id,username,userpwd,num) values (1,"testName2","testPwd2",10)
ON DUPLICATE KEY UPDATE
username = VALUES(username),
userpwd = VALUES(userpwd)

可以看到還是根據(jù)id來進(jìn)行判斷,如果主鍵重復(fù)則執(zhí)行update。 

測試沒有id時(shí):

insert into user (username,userpwd,num) values ("testName2","testPwd3",10)
ON DUPLICATE KEY UPDATE
username = VALUES(username),
userpwd = VALUES(userpwd)

可以看到,此時(shí)是根據(jù)唯一索引來進(jìn)行判斷 ,如果唯一索引重復(fù)則執(zhí)行update。

說明優(yōu)先級(jí):主鍵>唯一索引

此時(shí)測試沒有主鍵和唯一索引重復(fù)時(shí)的情況:

insert into user (username,userpwd,num) values ("testName4","testPwd4",10)
ON DUPLICATE KEY UPDATE
username = VALUES(username),
userpwd = VALUES(userpwd)

 可以發(fā)現(xiàn),此時(shí)是新增一條數(shù)據(jù),說明如果主鍵和唯一索引都不重復(fù)的情況執(zhí)行insert。

三、總結(jié)

ON DUPLICATE key update是根據(jù)索引字段是否重復(fù)來判斷是否執(zhí)行,如果重復(fù)則執(zhí)行update,否則則執(zhí)行insert。

優(yōu)先級(jí)主鍵>唯一索引

  • 當(dāng)主鍵重復(fù)時(shí)則執(zhí)行update
  • 當(dāng)主鍵不重復(fù),唯一索引重復(fù)時(shí)也執(zhí)行update
  • 當(dāng)主鍵和唯一索引值都不重復(fù)才執(zhí)行insert

PS:特殊情況,當(dāng)主鍵重復(fù)執(zhí)行update時(shí),如果此時(shí)唯一索引字段與其他字段也重復(fù)則會(huì)報(bào)錯(cuò)

到此這篇關(guān)于MySQL中ON DUPLICATE key update的使用的文章就介紹到這了,更多相關(guān)MySQL ON DUPLICATE key update內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL索引的5種應(yīng)用

    MySQL索引的5種應(yīng)用

    本文主要介紹了MySQL索引的5種應(yīng)用,包含聚集索引,唯一索引,非唯一(普通)索引,全文索引,組合索引等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • MySQL基礎(chǔ)入門教程之事務(wù)

    MySQL基礎(chǔ)入門教程之事務(wù)

    事務(wù)主要用于處理操作量大,復(fù)雜度高的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL基礎(chǔ)入門教程之事務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • mysql忘記密碼怎么辦(windows linux)

    mysql忘記密碼怎么辦(windows linux)

    本文給大家介紹windows系統(tǒng)和linux系統(tǒng)下mysql忘記密碼怎么辦的相關(guān)資料,本文給出了合理的解決方案,非常好用,需要的朋友參考下
    2015-11-11
  • 配置hive元數(shù)據(jù)到Mysql中的全過程記錄

    配置hive元數(shù)據(jù)到Mysql中的全過程記錄

    這篇文章主要給的大家介紹了關(guān)于配置hive元數(shù)據(jù)到Mysql中的全過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • MySQL判斷空值的三種方法

    MySQL判斷空值的三種方法

    在創(chuàng)建表時(shí),可以指定的列是否可以不包含值,如果在一個(gè)列不包含值,則其稱其為空值NULL,NULL一個(gè)特殊值,代表缺失的值或者不適用的情況,表示未知數(shù)據(jù),本文給大家介紹了MySQL判斷空值的三種方法,需要的朋友可以參考下
    2024-03-03
  • Mysql 行級(jí)鎖的使用及死鎖的預(yù)防方案

    Mysql 行級(jí)鎖的使用及死鎖的預(yù)防方案

    mysql的InnoDB,支持事務(wù)和行級(jí)鎖,可以使用行鎖來處理用戶提現(xiàn)等業(yè)務(wù)。使用mysql鎖的時(shí)候有時(shí)候會(huì)出現(xiàn)死鎖,要做好死鎖的預(yù)防。這篇文章通過實(shí)例應(yīng)用給大家講解
    2016-12-12
  • MySQL mysql-connector的具體實(shí)現(xiàn)

    MySQL mysql-connector的具體實(shí)現(xiàn)

    本文主要介紹了MySQL mysql-connector的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-11-11
  • CentOS 7 安裝Percona Server+Mysql

    CentOS 7 安裝Percona Server+Mysql

    這篇文章主要介紹了CentOS 7 安裝Percona Server+Mysql的相關(guān)資料,需要的朋友可以參考下
    2018-11-11
  • mysql主從數(shù)據(jù)庫不同步的2種解決方法

    mysql主從數(shù)據(jù)庫不同步的2種解決方法

    今天發(fā)現(xiàn)Mysql的主從數(shù)據(jù)庫沒有同步,很是疑惑,于是搜索整理了下,接下來介紹解決方法,有感興趣的朋友可以參考下
    2013-01-01
  • Ubuntu下啟動(dòng)、停止、重啟MySQL,查看錯(cuò)誤日志命令大全

    Ubuntu下啟動(dòng)、停止、重啟MySQL,查看錯(cuò)誤日志命令大全

    這篇文章主要介紹了Ubuntu下啟動(dòng)、停止、重啟MySQL,查看錯(cuò)誤日志命令大全,需要的朋友可以參考下
    2014-06-06

最新評(píng)論

同仁县| 隆林| 宜昌市| 合肥市| 烟台市| 绥化市| 蒙山县| 祁连县| 竹山县| 罗平县| 邳州市| 定日县| 永康市| 青岛市| 嘉鱼县| 岗巴县| 延长县| 左云县| 冀州市| 巴彦淖尔市| 西盟| 博野县| 台中市| 象山县| 榆社县| 兴文县| 霍林郭勒市| 富川| 禹州市| 固安县| 大悟县| 商都县| 西平县| 乌苏市| 北流市| 疏勒县| 乐陵市| 开阳县| 新平| 鲁山县| 若尔盖县|