免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MYSQL更新寫入數(shù)據(jù)—不同于INSERT INTO 的REPLACE INTO語法介紹

我們在使用 MySQL 數(shù)據(jù)庫時可能會遇到這種情況。如下Students_hobby_t 表,Id字段為唯一索引,當(dāng)我們使用 INSERT 向 Students_hobby_t 表中寫入一條記錄,且該條記錄的 Id值已存在于表中,則將會拋出主鍵沖突的錯誤。

當(dāng)然,有時候我們需要使用新記錄的值來覆蓋原來的記錄值。如果使用傳統(tǒng)的做法,則需要必須先使用DELETE 語句刪除原先的記錄,然后再使用 INSERT 寫入新的記錄。


REPLACE INTO

除此之外,在MySQL中提供了一種新的解決方案,那就是 REPLACE INTO 語句。使用REPLACE寫入一條記錄時, 如果發(fā)現(xiàn)表中已經(jīng)有此行數(shù)據(jù)(根據(jù)主鍵或者唯一索引判斷)則先刪除此行數(shù)據(jù),然后插入新的數(shù)據(jù)。否則,直接插入新數(shù)據(jù),避免了在同時使用DELETE和INSERT時添加事務(wù)等復(fù)雜操作了。

在使用REPLACE時,表中必須存在主鍵索引或唯一索引,而且這個索引所在的字段不能允許空值,否則REPLACE將和INSERT完全一樣的。

如下,使用REPLACE語句是寫入或更新一條記錄。

使用REPLACE寫入或更新多條記錄:

REPLACE也可以使用 SET 語句寫入或更新記錄:

另外,還支持 REPLACE SELECT 用法,即使用REPLACE SELECT從Students_hobby_o 表中將所有數(shù)據(jù)導(dǎo)入Students_hobby_t 中。這種用法并不要求列名匹配,只關(guān)心字段的位置。

如上即為REPLACE INTO語法的三種形式:

  • replace into table(col, …) values(…)
  • replace into table(col, …) select
  • replace into table set col=value, …

除此之外,我們還需要知道。使用 REPLACE寫入一條記錄后,數(shù)據(jù)庫將返回所影響的行數(shù):

  • 如果返回 1 時,則說明在表中并沒有重復(fù)的記錄。
  • 如果返回 2 時,則說明有一條重復(fù)記錄,數(shù)據(jù)庫先自動使用 DELETE刪除這條記錄,然后再使用INSERT 寫入新的記錄。
  • 如果當(dāng)返回的值大于2 時,則說明存在多個唯一索引,在這種情況下,REPLACE將考慮每一個唯一索引,并對每一個索引對應(yīng)的重復(fù)記錄都刪除,然后再寫入這條新記錄,即有多條記錄被刪除和寫入。

這里需要注意的是,如果當(dāng)表中存在多個唯一索引時,使用REPLACE需要注意以下情況,假設(shè)有Students_hobby_t 表的Id、Phone都是唯一索引,如下:

此時,我們使用REPLACE 語句向Students_hobby_t 中寫入一條記錄。

返回結(jié)果如下:

此時Students_hobby_t 表數(shù)據(jù)如下:

我們可以看到,REPLACE將原先的2 條記錄都刪除了,然后將新的記錄寫入。


UPDATE和REPLACE的區(qū)別

  • 當(dāng)UPDATE 中WHERE 條件沒有匹配到記錄時,不執(zhí)行任何操作。而REPLACE在有重復(fù)記錄時執(zhí)行更新(先刪除后寫入)操作,在沒有重復(fù)記錄時執(zhí)行寫入操作。
  • UPDATE可以選擇性地更新記錄的部分字段,而REPLACE在發(fā)現(xiàn)有重復(fù)記錄時就將這條記錄徹底刪除,再插入新的記錄,即將所有的字段都更新。

最后,不建議使用REPLACE INTO更新部分字段,可能會導(dǎo)致其它有值字段變?yōu)镹ULL。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
轉(zhuǎn)載 MySQL的Insert/replace/update/delete的幾個使用方法
MySQL Replace INTO的使用
MySQL數(shù)據(jù)庫INSERT、UPDATE、DELETE以及REPLACE語句的用法詳解
MySQL優(yōu)化(四) MySQL 卓越資源
MySql避免重復(fù)插入記錄
MySQL的萬字總結(jié)(緩存,索引,Explain,事務(wù),redo日志等)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服