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

關(guān)于避免MySQL替換邏輯SQL的坑爹操作詳解

 更新時間:2018年03月11日 14:22:28   作者:dbapower  
這篇文章主要給大家介紹了關(guān)于避免MySQL替換邏輯SQL的坑爹操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

replace into和insert into on duplicate key 區(qū)別

replace的用法

當(dāng)不沖突時相當(dāng)于insert,其余列默認(rèn)值
當(dāng)key沖突時,自增列更新,replace沖突列,其余列默認(rèn)值
Com_replace會加1
Innodb_rows_updated會加1

Insert into …on duplicate key的用法

不沖突時相當(dāng)于insert,其余列默認(rèn)值
當(dāng)與key沖突時,只update相應(yīng)字段值。
Com_insert會加1
Innodb_rows_inserted會增加1

實驗展示

表結(jié)構(gòu)

create table helei1(
id int(10) unsigned NOT NULL AUTO_INCREMENT,
name varchar(20) NOT NULL DEFAULT '',
age tinyint(3) unsigned NOT NULL default 0,
PRIMARY KEY(id),
UNIQUE KEY uk_name (name)
)
ENGINE=innodb AUTO_INCREMENT=1 
DEFAULT CHARSET=utf8;

表數(shù)據(jù)

root@127.0.0.1 (helei)> select * from helei1;
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 1 | 賀磊 | 26 |
| 2 | 小明 | 28 |
| 3 | 小紅 | 26 |
+----+-----------+-----+
3 rows in set (0.00 sec)

replace into用法

root@127.0.0.1 (helei)> replace into helei1 (name) values('賀磊');
Query OK, 2 rows affected (0.00 sec)
root@127.0.0.1 (helei)> select * from helei1;
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 2 | 小明 | 28 |
| 3 | 小紅 | 26 |
| 4 | 賀磊 | 0 |
+----+-----------+-----+
3 rows in set (0.00 sec)
root@127.0.0.1 (helei)> replace into helei1 (name) values('愛璇');
Query OK, 1 row affected (0.00 sec)
root@127.0.0.1 (helei)> select * from helei1;
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 2 | 小明 | 28 |
| 3 | 小紅 | 26 |
| 4 | 賀磊 | 0 |
| 5 | 愛璇 | 0 |
+----+-----------+-----+
4 rows in set (0.00 sec)

replace的用法

當(dāng)沒有key沖突時,replace into 相當(dāng)于insert,其余列默認(rèn)值

當(dāng)key沖突時,自增列更新,replace沖突列,其余列默認(rèn)值

Insert into …on duplicate key:

root@127.0.0.1 (helei)> select * from helei1;
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 2 | 小明 | 28 |
| 3 | 小紅 | 26 |
| 4 | 賀磊 | 0 |
| 5 | 愛璇 | 0 |
+----+-----------+-----+
4 rows in set (0.00 sec)
root@127.0.0.1 (helei)> insert into helei1 (name,age) values('賀磊',0) on duplicate key update age=100;
Query OK, 2 rows affected (0.00 sec)
root@127.0.0.1 (helei)> select * from helei1;
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 2 | 小明 | 28 |
| 3 | 小紅 | 26 |
| 4 | 賀磊 | 100 |
| 5 | 愛璇 | 0 |
+----+-----------+-----+
4 rows in set (0.00 sec)
root@127.0.0.1 (helei)> select * from helei1;
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 2 | 小明 | 28 |
| 3 | 小紅 | 26 |
| 4 | 賀磊 | 100 |
| 5 | 愛璇 | 0 |
+----+-----------+-----+
4 rows in set (0.00 sec)
root@127.0.0.1 (helei)> insert into helei1 (name) values('愛璇') on duplicate key update age=120;
Query OK, 2 rows affected (0.01 sec)
root@127.0.0.1 (helei)> select * from helei1;
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 2 | 小明 | 28 |
| 3 | 小紅 | 26 |
| 4 | 賀磊 | 100 |
| 5 | 愛璇 | 120 |
+----+-----------+-----+
4 rows in set (0.00 sec)
root@127.0.0.1 (helei)> insert into helei1 (name) values('不存在') on duplicate key update age=80;
Query OK, 1 row affected (0.00 sec)
root@127.0.0.1 (helei)> select * from helei1;
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 2 | 小明 | 28 |
| 3 | 小紅 | 26 |
| 4 | 賀磊 | 100 |
| 5 | 愛璇 | 120 |
| 8 | 不存在 | 0 |
+----+-----------+-----+
5 rows in set (0.00 sec)

總結(jié)

replace into這種用法,相當(dāng)于如果發(fā)現(xiàn)沖突鍵,先做一個delete操作,再做一個insert 操作,未指定的列使用默認(rèn)值,這種情況會導(dǎo)致自增主鍵產(chǎn)生變化,如果表中存在外鍵或者業(yè)務(wù)邏輯上依賴主鍵,那么會出現(xiàn)異常。因此建議使用Insert into …on duplicate key。由于編寫時間也很倉促,文中難免會出現(xiàn)一些錯誤或者不準(zhǔn)確的地方,不妥之處懇請讀者批評指正。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • MySQL進(jìn)階之索引

    MySQL進(jìn)階之索引

    索引就是一種數(shù)據(jù)結(jié)構(gòu),這種結(jié)構(gòu)類似,鏈表,樹等等。但是比它們要復(fù)雜的多,索引(index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)(有序),本文詳細(xì)介紹了MySQL索引,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • Navicat無法連接MySQL報錯1251的解決方案

    Navicat無法連接MySQL報錯1251的解決方案

    這篇文章主要為大家詳細(xì)介紹了Navicat無法連接MySQL報錯1251的解決方案,文中解決方法介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-12-12
  • 講解Linux系統(tǒng)下如何自動備份MySQL數(shù)據(jù)的基本教程

    講解Linux系統(tǒng)下如何自動備份MySQL數(shù)據(jù)的基本教程

    這篇文章主要介紹了Linux系統(tǒng)下如何自動備份MySQL數(shù)據(jù)的基本教程,還給出了利用shell腳本全備份和增量備份的基本方法,需要的朋友可以參考下
    2015-11-11
  • mysql 5.7.20解壓版安裝方法步驟詳解(兩種方法)

    mysql 5.7.20解壓版安裝方法步驟詳解(兩種方法)

    本文給大家分享mysql 5.7.20解壓版安裝方法步驟詳解,本文給大家分享兩種方法,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-11-11
  • Mysql提升大數(shù)據(jù)表拷貝效率的解決方案

    Mysql提升大數(shù)據(jù)表拷貝效率的解決方案

    這篇文章主要給大家介紹了關(guān)于Mysql提升大數(shù)據(jù)表拷貝效率的解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • innodb_flush_method取值方法(實例講解)

    innodb_flush_method取值方法(實例講解)

    下面小編就為大家?guī)硪黄猧nnodb_flush_method取值方法(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • mysql中Load Data記錄換行問題的解決方法

    mysql中Load Data記錄換行問題的解決方法

    有關(guān)mysql中Load Data記錄換行的問題的解決方法, 需要的朋友可以參考下
    2013-02-02
  • MySQL查看所有連接的客戶端ip方式

    MySQL查看所有連接的客戶端ip方式

    這篇文章主要介紹了MySQL查看所有連接的客戶端ip方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • MySQL和連接相關(guān)的timeout 的詳細(xì)整理

    MySQL和連接相關(guān)的timeout 的詳細(xì)整理

    這篇文章主要介紹了MySQL和連接相關(guān)的timeout 的詳細(xì)整理的相關(guān)資料,本文主要總結(jié)下和連接有關(guān)的timeout,需要的朋友可以參考下
    2017-08-08
  • 解讀MySQL的客戶端和服務(wù)端協(xié)議

    解讀MySQL的客戶端和服務(wù)端協(xié)議

    這篇文章主要介紹了MySQL的客戶端和服務(wù)端協(xié)議的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-05-05

最新評論

轮台县| 镇雄县| 图片| 永靖县| 太康县| 阜城县| 广平县| 涟源市| 福泉市| 富川| 个旧市| 佛山市| 治多县| 绥滨县| 南汇区| 南平市| 广水市| 博客| 黑龙江省| 武功县| 岳池县| 佛冈县| 康马县| 普安县| 墨脱县| 宜黄县| 池州市| 浑源县| 城固县| 湘阴县| 上高县| 沙河市| 新安县| 梁山县| 玉溪市| 乡宁县| 奉节县| 冀州市| 南乐县| 兴和县| 孙吴县|