在MySQL數據庫中,這4種方式能夠避免重複的插入數據!

最多見的方式就是爲字段設置主鍵或惟一索引,當插入重複數據時,拋出錯誤,程序終止,但這會給後續處理帶來麻煩,所以須要對插入語句作特殊處理,儘可能避開或忽略異常,下面我簡單介紹一下,感興趣的朋友能夠嘗試一下:數據庫

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

01 insert ignore into

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

attachments-2020-12-SAcQsSzf5fd1d13e29a09.jpg

02 on duplicate key update

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

attachments-2020-12-CnPa7sie5fd1d146dd586.png

03 replace into

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

attachments-2020-12-ktMGfkSN5fd1d153571d0.png

04 insert if not exists

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

attachments-2020-12-9DC4YWKY5fd1d1621ca17.png

目前,就分享這種MySQL處理重複數據的方式吧,前3種方式適合字段設置了主鍵或惟一索引,最後一種方式則沒有此限制,只要你熟悉一下使用過程,很快就能掌握的。date

 

相關文章
相關標籤/搜索