{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

在MySQL數據庫中,有哪些方法可以避免重復的插入數據?

cpuprocpupro 回答0 收藏1
收藏問題

2條回答

Zoom

Zoom

回答于2022-06-28 14:07

最常見的方式就是為字段設置主鍵或唯一索引,當插入重復數據時,拋出錯誤,程序終止,但這會給后續處理帶來麻煩,因此需要對插入語句做特殊處理,盡量避開或忽略異常,下面我簡單介紹一下,感興趣的朋友可以嘗試一下:

這里為了方便演示,我新建了一個user測試表,主要有id,username,sex,address這4個字段,其中主鍵為id(自增),同時對username字段設置了唯一索引:

01

insert ignore into

即插入數據時,如果數據存在,則忽略此次插入,前提條件是插入的數據字段設置了主鍵或唯一索引,測試SQL語句如下,當插入本條數據時,MySQL數據庫會首先檢索已有數據(也就是idx_username索引),如果存在,則忽略本次插入,如果不存在,則正常插入數據:

02

on duplicate key update

即插入數據時,如果數據存在,則執行更新操作,前提條件同上,也是插入的數據字段設置了主鍵或唯一索引,測試SQL語句如下,當插入本條記錄時,MySQL數據庫會首先檢索已有數據(idx_username索引),如果存在,則執行update更新操作,如果不存在,則直接插入:

03

replace into

即插入數據時,如果數據存在,則刪除再插入,前提條件同上,插入的數據字段需要設置主鍵或唯一索引,測試SQL語句如下,當插入本條記錄時,MySQL數據庫會首先檢索已有數據(idx_username索引),如果存在,則先刪除舊數據,然后再插入,如果不存在,則直接插入:

04

insert if not exists

insert into … select … where not exist ... ,這種方式適合于插入的數據字段沒有設置主鍵或唯一索引,當插入一條數據時,首先判斷MySQL數據庫中是否存在這條數據,如果不存在,則正常插入,如果存在,則忽略:

目前,就分享這4種MySQL處理重復數據的方式吧,前3種方式適合字段設置了主鍵或唯一索引,最后一種方式則沒有此限制,只要你熟悉一下使用過程,很快就能掌握的,網上也有相關資料和教程,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

評論0 贊同0
  •  加載中...
yy13818512006

yy13818512006

回答于2022-06-28 14:07

MySQL中大概有四種方式可以防止數據的重復插入,我們以如下user_basic_infor表為例,分別簡單介紹一下這幾種方式,user_basic_infor的建表SQL語句如下:



insert ignore into

如上,在 user_basic_infor表中使用主鍵索引(PRIMARY KEY)以及唯一索引(UNIQUE KEY)確保數據具的唯一性,為避免重復插入記錄可以使用 insert ignore into 語法,如下:

當使用 ignore 插入數據時,如果出現錯誤,如重復記錄,將不返回錯誤,僅以警告形式返回。因此使用 ignore時,請確保SQL語句本身沒有問題,否則也將會被忽略掉。



on duplicate key update

同樣,在user_basic_infor表中使用主鍵索引(PRIMARY KEY)以及唯一索引(UNIQUE KEY)確保數據具的唯一性,為避免重復插入記錄也可以使用 on duplicate key update 語法,如下:

如果在 insert 語句末尾指定了on duplicate key update ……,并且插入行后會導致在主鍵索引(PRIMARY KEY)或者唯一索引(UNIQUE KEY)中出現重復值時,則在出現重復值的行執行

update ,如果不會導致唯一值列重復的問題,則插入該新行。



replace into

同樣,在user_basic_infor表中使用主鍵索引(PRIMARY KEY)以及唯一索引(UNIQUE KEY)確保數據具的唯一性,為避免重復插入記錄也可以使用replace into 語法,如下:

replace 嘗試把新行插入到表中,當如果插入數據的主鍵索引(PRIMARY KEY)以及唯一索引(UNIQUE KEY)出現重復,導致報錯而造成插入失敗時,會先從表中刪除原有涉及到重復的行,然后再次嘗試把新行插入到表中,這種方法就是無論原來有沒有相同的記錄,都會先刪除再執行插入。



insert … select … where not exist ……

除此之外,在 MySQL 中,插入一條記錄,我們可以先檢查這條記錄是否已經存在,當記錄不存在時再執行插入操作,這樣可以不只通過主鍵索引(PRIMARY KEY)或者唯一索引(UNIQUE KEY)來判斷,也可通過其它條件,如下:

評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<