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

MySQL 處理插入過程中的主鍵唯一鍵重復值的解決方法

 更新時間:2016年04月15日 09:26:27   投稿:mrr  
本篇文章主要介紹在插入數(shù)據(jù)到表中遇到鍵重復避免插入重復值的處理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE的相關(guān)知識,感興趣的朋友一起學習吧

本篇文章主要介紹在插入數(shù)據(jù)到表中遇到鍵重復避免插入重復值的處理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE;接下來就分別看看這三種方式的處理辦法。

IGNORE

使用ignore當插入的值遇到主鍵(PRIMARY KEY)或者唯一鍵(UNIQUE KEY)重復時自動忽略重復的記錄行,不影響后面的記錄行的插入,

創(chuàng)建測試表

CREATE TABLE Tignore
(ID INT NOT NULL PRIMARY KEY ,
NAME1 INT
)default charset=utf8; 

正常的插入如果插入的記錄中存在鍵重復會報錯,整個語句都會執(zhí)行失敗

使用IGNORE如果插入的記錄中存在重復值會忽略重復值的該記錄行,不影響其它行的插入。

REPLACE

使用replace當插入的記錄遇到主鍵或者唯一鍵重復時先刪除表中重復的記錄行再插入。

REPLACE INTO Treplace() VALUES(1,1),(1,2),(2,2); 

創(chuàng)建測試表

DROP TABLE IF EXISTS Treplace;
CREATE TABLE Treplace
(ID INT NOT NULL PRIMARY KEY ,
NAME1 INT
)default charset=utf8; 

從輸出的信息可以看到是4行受影響,說明它是先插入了(1,1)然后又刪除了(1,1)

ON DUPLICATE KEY UPDATE

當插入的記錄遇到主鍵或者唯一鍵重復時,會執(zhí)行后面定義的UPDATE操作。

相當于先執(zhí)行Insert 操作,再根據(jù)主鍵或者唯一鍵執(zhí)行update操作。

創(chuàng)建測試表

DROP TABLE IF EXISTS Tupdate;
CREATE TABLE Tupdate
(ID INT NOT NULL PRIMARY KEY ,
NAME1 INT UNIQUE KEY
)default charset=utf8; 
INSERT INTO Tupdate() VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE NAME1=NAME1+1;
INSERT INTO Tupdate() VALUES(1,1),(1,2) ON DUPLICATE KEY UPDATE NAME1=VALUES(NAME1)+1; 

第一條語句相當于執(zhí)行:

INSERT INTO Tupdate() VALUES(1,1)
UPDATE Tupdate
SET NAME1=NAME1+1
WHERE ID=1; 

第二條語句相當于執(zhí)行:

INSERT INTO Tupdate() VALUES(1,1)
UPDATE Tupdate
SET NAME1=2+1
WHERE ID=1; 

在ON DUPLICATE KEY UPDATE后面使用VALUES指的就是插入的記錄的值,而不使用VALUES指的是表的自身值。

注意: ON DUPLICATE KEY UPDATE的后面執(zhí)行的UPDATE更新的記錄是WHERE重復的主鍵或者唯一鍵的ID,這點非常重要。

比如下面這種情況:

INSERT INTO Tupdate() VALUES(1,1),(2,1) ON DUPLICATE KEY UPDATE NAME1=VALUES(ID)+1; 

它是唯一鍵NAME1重復但是主鍵不重復,執(zhí)行的語句是這樣的:

INSERT INTO Tupdate() VALUES(1,1)
UPDATE Tupdate
SET NAME1=2+1
WHERE ID=1; 

不要認為會插入主鍵ID=2的記錄進去。

總結(jié)

上面的三種處理重復值的方法都支持標準的INSERT語法,包括INSERT INTO...VALUES, INSERT INTO ....SET ,INSERT INTO..... SELECT。

關(guān)于MySQL 處理插入過程中的主鍵唯一鍵重復值的解決方法小編就給大家介紹這么多,希望對大家有所幫助!

相關(guān)文章

  • MySQL庫操作和表操作詳細圖文教程

    MySQL庫操作和表操作詳細圖文教程

    在MySQL數(shù)據(jù)庫中表是一種很重要的數(shù)據(jù)庫對象,是組成數(shù)據(jù)庫的基本元素,由若干個字段組成,主要用來實現(xiàn)存儲數(shù)據(jù)記錄,這篇文章主要給大家介紹了關(guān)于MySQL庫操作和表操作的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • mysql8.0.11 winx64手動安裝配置教程

    mysql8.0.11 winx64手動安裝配置教程

    這篇文章主要為大家詳細介紹了mysql8.0.11 winx64手動安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • MySQL中索引的分類詳解

    MySQL中索引的分類詳解

    這篇文章主要介紹了MySQL中索引的分類詳解,普通索引就是最基礎的索引,這種索引沒有任何的約束作用,它存在的主要意義就是提高查詢效率,唯一性索引是在普通索引的基礎上增加了數(shù)據(jù)唯一性的約束,一個表中可以有多個,需要的朋友可以參考下
    2023-08-08
  • mysql如何利用binlog進行數(shù)據(jù)恢復詳解

    mysql如何利用binlog進行數(shù)據(jù)恢復詳解

    MySQL的binlog日志是MySQL日志中非常重要的一種日志,下面這篇文章主要給大家介紹了關(guān)于mysql如何利用binlog進行數(shù)據(jù)恢復的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-10-10
  • Mysql帶And關(guān)鍵字的多條件查詢語句

    Mysql帶And關(guān)鍵字的多條件查詢語句

    MySQL帶AND關(guān)鍵字的多條件查詢,MySQL中,使用AND關(guān)鍵字,可以連接兩個或者多個查詢條件,只有滿足所有條件的記錄,才會被返回
    2017-07-07
  • 干涉MySQL優(yōu)化器使用hash?join的方法

    干涉MySQL優(yōu)化器使用hash?join的方法

    這篇文章主要介紹了如何干涉MySQL優(yōu)化器使用hash?join,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • mac安裝mysql數(shù)據(jù)庫及配置環(huán)境變量的圖文教程

    mac安裝mysql數(shù)據(jù)庫及配置環(huán)境變量的圖文教程

    本文主要介紹了mac安裝mysql數(shù)據(jù)庫及配置環(huán)境變量,文中通過圖文代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Windows?11?和?Rocky?9?Linux?平臺?MySQL?8.0.33?簡易安裝詳細教程

    Windows?11?和?Rocky?9?Linux?平臺?MySQL?8.0.33?簡易安裝詳細教程

    這篇文章主要介紹了Windows?11和Rocky9?Linux平臺MySQL8.0.33簡易安裝教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • 30種SQL語句優(yōu)化的方法匯總

    30種SQL語句優(yōu)化的方法匯總

    這篇文章從30個方面,分享了sql優(yōu)化的一些小技巧,希望對你有所幫助,需要的朋友可以參考下
    2022-10-10
  • Mysql 如何查詢時間段交集

    Mysql 如何查詢時間段交集

    這篇文章主要介紹了Mysql 查詢時間段交集的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論