最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL之存在則更新,否則就插入數(shù)據(jù)

 更新時(shí)間:2024年01月31日 16:04:03   作者:ChengQinHong  
這篇文章主要介紹了MySQL之存在則更新,否則就插入數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

背景

用戶獲得免費(fèi)電影觀看權(quán),如果同個(gè)電影獲得再次獲得觀看權(quán),則在領(lǐng)取記錄中更新獲取時(shí)間,如果首次獲取的免費(fèi)電影觀看權(quán),則新增一條獲獎(jiǎng)記錄。

思考

其實(shí)是數(shù)據(jù)庫(kù)的“存在則更新數(shù)據(jù),不存在就插入數(shù)據(jù)”問(wèn)題,MySQL有相應(yīng)的語(yǔ)法可以解決,需要搭配索引。

數(shù)據(jù)表結(jié)構(gòu)

CREATE TABLE `prize_order` (
  `id` int NOT NULL AUTO_INCREMENT,
  `mobile` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手機(jī)號(hào)碼',
  `order_status` int DEFAULT '0' COMMENT '受理狀態(tài),1-成功,0-失敗',
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
  `prize_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '獎(jiǎng)品電影編號(hào)',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `index_uni` (`mobile`,`prize_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='訂單日志表';

索引

數(shù)據(jù)

第一種insert語(yǔ)法(推薦?。。。?/h3>

語(yǔ)法(此時(shí)不知道表中已有prize_id='1'的數(shù)據(jù))

insert into prize_order (mobile,create_time,prize_id) values('15122223333','2022-10-02 00:00:00','1') on DUPLICATE key update create_time =now()

不知道表中數(shù)據(jù)的情況下,已有數(shù)據(jù)會(huì)更新,mobile='15122223333' and prize_id='1'數(shù)據(jù)會(huì)修改create_time字段=now() 

執(zhí)行情況

語(yǔ)法(此時(shí)不知道表中無(wú)prize_id='60'的數(shù)據(jù))

insert into prize_order (mobile,create_time,prize_id) values('15122223333',now(),'60') on DUPLICATE key update create_time = now()

不知道表中數(shù)據(jù)的情況下, 當(dāng)數(shù)據(jù)不存在時(shí),則會(huì)新增一條mobile='15122223333' ,prize_id='1',create_time字段=now() 的數(shù)據(jù) 

執(zhí)行情況

第二種replace語(yǔ)法(個(gè)別場(chǎng)景下使用)

語(yǔ)法(此時(shí)不知道表中已有prize_id='1'的數(shù)據(jù))

replace into prize_order(mobile,order_status,create_time,prize_id)VALUES('15122223333','1',now(),'1')

執(zhí)行情況

???????

 

語(yǔ)法(此時(shí)不知道表中無(wú)prize_id='20'的數(shù)據(jù))

replace into prize_order(mobile,order_status,create_time,prize_id)VALUES('15122223333','1',now(),'20')

執(zhí)行結(jié)果

 缺點(diǎn)

相信replace語(yǔ)法對(duì)很多“存在則更新,否則插入數(shù)據(jù)”的需求都滿足。

我們也看到了,它會(huì)刪除原數(shù)據(jù),再進(jìn)行插入數(shù)據(jù),此時(shí)你有些字段不想更新,則被它抹除了,所以,用這個(gè)語(yǔ)法記得把所有需要的字段都正確賦值,不然會(huì)出現(xiàn)丟失數(shù)據(jù)的后果。

總結(jié)

根據(jù)以上對(duì)比,insert語(yǔ)法更優(yōu),推薦使用,因?yàn)椴挥绊懺衖d,也只會(huì)更新所需字段,其余不處理的字段保持原有值;而replace語(yǔ)法則會(huì)改變id和改變除所需字段以外的值,有丟失數(shù)據(jù)的風(fēng)險(xiǎn),建議熟悉該語(yǔ)法并對(duì)應(yīng)業(yè)務(wù)場(chǎng)景才使用。

好了,以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 分享8個(gè)不得不說(shuō)的MySQL陷阱

    分享8個(gè)不得不說(shuō)的MySQL陷阱

    這篇文章給大家分享8個(gè)不得不說(shuō)的MySQL陷阱,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-03-03
  • mysql實(shí)現(xiàn)自增序列的示例代碼

    mysql實(shí)現(xiàn)自增序列的示例代碼

    這篇文章主要介紹了mysql實(shí)現(xiàn)自增序列的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • mysql 5.7.17 winx64安裝配置方法圖文教程

    mysql 5.7.17 winx64安裝配置方法圖文教程

    這篇文章主要為大家分享了mysql 5.7.17winx64安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • MySQL?時(shí)區(qū)與?serverTimezone詳解

    MySQL?時(shí)區(qū)與?serverTimezone詳解

    存儲(chǔ)?TIMESTAMP?類型數(shù)據(jù)時(shí),MySQL 會(huì)根據(jù)當(dāng)前會(huì)話的時(shí)區(qū)將時(shí)間轉(zhuǎn)換為 UTC 時(shí)間,MySQL 實(shí)際存儲(chǔ)的是 UTC 時(shí)間,這篇文章主要介紹了MySQL?時(shí)區(qū)與?serverTimezone,需要的朋友可以參考下
    2024-12-12
  • mysql中文顯示為問(wèn)號(hào)?的問(wèn)題及解決

    mysql中文顯示為問(wèn)號(hào)?的問(wèn)題及解決

    這篇文章主要介紹了mysql中文顯示為問(wèn)號(hào)?的問(wèn)題及解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MySQL5.6下windows msi安裝詳細(xì)介紹

    MySQL5.6下windows msi安裝詳細(xì)介紹

    這篇文章主要介紹了MySQL5.6下windows msi安裝詳細(xì)介紹,介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • 詳解MySQL如何選擇合適的索引

    詳解MySQL如何選擇合適的索引

    選擇合適的索引是數(shù)據(jù)庫(kù)優(yōu)化中非常重要的一步,正確的索引可以大幅提高查詢性能,減少數(shù)據(jù)庫(kù)響應(yīng)時(shí)間;而不當(dāng)?shù)乃饕x擇則可能增加存儲(chǔ)開(kāi)銷,影響數(shù)據(jù)庫(kù)性能,甚至使得某些操作變得更加緩慢,以下是選擇合適索引的一些指導(dǎo)原則和策略,需要的朋友可以參考下
    2024-12-12
  • 從MySQL 5.5遷移到Mariadb 10.1.14所遇到的問(wèn)題

    從MySQL 5.5遷移到Mariadb 10.1.14所遇到的問(wèn)題

    這篇文章主要介紹了從MySQL 5.5遷移到Mariadb 10.1.14所遇到的問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • 使用JDBC在MySQL數(shù)據(jù)庫(kù)中如何快速批量插入數(shù)據(jù)

    使用JDBC在MySQL數(shù)據(jù)庫(kù)中如何快速批量插入數(shù)據(jù)

    這篇文章主要介紹了使用JDBC在MySQL數(shù)據(jù)庫(kù)中如何快速批量插入數(shù)據(jù),可以有效的解決一次插入大數(shù)據(jù)的方法,
    2016-11-11
  • MySQL數(shù)據(jù)備份、還原、數(shù)據(jù)庫(kù)遷移以及表的導(dǎo)出和導(dǎo)入

    MySQL數(shù)據(jù)備份、還原、數(shù)據(jù)庫(kù)遷移以及表的導(dǎo)出和導(dǎo)入

    作為流行的開(kāi)源數(shù)據(jù)庫(kù)管理系統(tǒng),MySQL的使用者眾多,為了維護(hù)數(shù)據(jù)安全性,數(shù)據(jù)備份是必不可少的,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)備份、還原、數(shù)據(jù)庫(kù)遷移以及表的導(dǎo)出和導(dǎo)入的相關(guān)資料,需要的朋友可以參考下
    2022-11-11

最新評(píng)論

长春市| 封开县| 常德市| 古浪县| 楚雄市| 铜陵市| 晋州市| 鹤峰县| 郓城县| 大悟县| 五华县| 大丰市| 乃东县| 福清市| 文山县| 翼城县| 章丘市| 绵阳市| 澄城县| 乃东县| 吕梁市| 左权县| 阿鲁科尔沁旗| 蕉岭县| 花垣县| 乌兰察布市| 宁海县| 淅川县| 安阳市| 万安县| 民乐县| 衡东县| 胶州市| 阜康市| 淮北市| 湘西| 沐川县| 西华县| 永宁县| 九江县| 莫力|