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

MySQL中ON DUPLICATE key update的使用

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

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

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

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

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

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

1.ON DUPLICATE key update使用介紹:

有時候由于業(yè)務(wù)需求,可能需要先去根據(jù)某一字段值查詢數(shù)據(jù)庫中是否有記錄,有則更新,沒有則插入。這個時候就可以用到ON DUPLICATE key update這個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時:

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

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

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

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

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

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

三、總結(jié)

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

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

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

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

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

相關(guān)文章

  • Centos下 修改mysql密碼的方法

    Centos下 修改mysql密碼的方法

    這篇文章主要介紹了Centos下 修改mysql密碼的方法,需要的朋友可以參考下
    2017-02-02
  • Mysql 模糊查詢和正則表達(dá)式實(shí)例詳解

    Mysql 模糊查詢和正則表達(dá)式實(shí)例詳解

    在MySQL中,可以使用LIKE運(yùn)算符進(jìn)行模糊查詢,LIKE運(yùn)算符用于匹配字符串模式,其中可以使用通配符來表示任意字符或字符序列,這篇文章主要介紹了Mysql 模糊查詢和正則表達(dá)式實(shí)例詳解,需要的朋友可以參考下
    2023-11-11
  • 關(guān)于Mysql自增id的這些你可能還不知道

    關(guān)于Mysql自增id的這些你可能還不知道

    這篇文章主要給大家介紹了關(guān)于Mysql自增id的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Windows下簡單的Mysql備份BAT腳本分享

    Windows下簡單的Mysql備份BAT腳本分享

    朋友說在windows下面用bat命令備份失敗,他一時找不到問題所在,于是找我?guī)兔Σ榭聪隆2檎液蠼鉀Q了該問題,想著總結(jié)下來,所以這篇文章主要跟大家分享了一個在Windows下簡單的Mysql備份BAT腳本,需要的朋友可以參考下。
    2017-03-03
  • mysqld_multi在Linux服務(wù)器上運(yùn)行多個MySQL實(shí)例

    mysqld_multi在Linux服務(wù)器上運(yùn)行多個MySQL實(shí)例

    在Linux系統(tǒng)上使用mysqld_multi來啟動和管理多個MySQL實(shí)例是一種常見的做法,這種方式允許你在同一臺機(jī)器上運(yùn)行多個MySQL服務(wù),每個服務(wù)可以有不同的配置和數(shù)據(jù)目錄,這篇文章展示如何設(shè)置和使用mysqld_multi來啟動多個MySQL實(shí)例
    2025-02-02
  • MySQL如何構(gòu)建數(shù)據(jù)表索引

    MySQL如何構(gòu)建數(shù)據(jù)表索引

    索引是對數(shù)據(jù)庫表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。如果想按特定職員的姓來查找他或她,則與在表中搜索所有的行相比,索引有助于更快地獲取信息。本文將通過一個案例帶領(lǐng)你理解索引的概念
    2021-05-05
  • MySQL時間格式化date_format使用語法

    MySQL時間格式化date_format使用語法

    這篇文章主要為大家介紹了MySQL時間格式化date_format使用語法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 關(guān)于Mysql update修改多個字段and的語法問題詳析

    關(guān)于Mysql update修改多個字段and的語法問題詳析

    這篇文章主要給大家介紹了關(guān)于mysql update修改多個字段and的語法問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 圖解Mysql中的LEFT?JOIN、RIGHT?JOIN與JOIN的區(qū)別

    圖解Mysql中的LEFT?JOIN、RIGHT?JOIN與JOIN的區(qū)別

    這篇文章主要介紹了圖解Mysql中的LEFT?JOIN、RIGHT?JOIN與JOIN的區(qū)別,Left?Join就是以左邊為基準(zhǔn),Inner?Join就是查兩個重復(fù)的部分,Right?Join就是以右邊為基準(zhǔn),需要的朋友可以參考下
    2023-11-11
  • Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式

    Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式

    數(shù)據(jù)庫SQL優(yōu)化是老生常談的問題,下面這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫慢查詢常用優(yōu)化方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05

最新評論