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

MySQL和Oracle批量插入SQL的通用寫法示例

 更新時(shí)間:2021年11月12日 14:27:02   作者:GreatHair  
當(dāng)我們要往數(shù)據(jù)庫中批量保存多條數(shù)據(jù)得時(shí)候,分不同數(shù)據(jù)庫,有不同得插入方式,這篇文章主要給大家介紹了關(guān)于MySQL和Oracle批量插入SQL的通用寫法的相關(guān)資料,需要的朋友可以參考下

舉個(gè)例子:

現(xiàn)在要批量新增User對象到數(shù)據(jù)庫USER表中

public class User{
    //姓名
    private String name;
    //年齡
    private Integer age;
    //性別
    private Integer sex
}

大部分人對MySQL比較熟悉,可能覺得批量新增的SQL都是這樣寫,其實(shí)并不然。該寫法在MySQL中沒問題,而在Oracle中,這樣寫就會(huì)報(bào)錯(cuò)。

MySQL寫法:

INSERT INTO USER 
    (NAME,AGE,SEX)
VALUES
('val1_1', 'val1_2', 'val1_3'),
('val2_1', 'val2_2', 'val2_3'),
('val3_1', 'val3_2', 'val3_3');

Oracle寫法:

//多次單條插入
INSERT INTO USER (NAME,AGE,SEX) VALUES ('val1_1', 'val1_2', 'val1_3');
INSERT INTO USER (NAME,AGE,SEX) VALUES ('val2_1', 'val2_2', 'val2_3');
INSERT INTO USER (NAME,AGE,SEX) VALUES ('val3_1', 'val3_2', 'val3_3');

//批量插入
INSERT ALL
   INTO USER (NAME,AGE,SEX) VALUES ('val1_1', 'val1_2', 'val1_3')
   INTO USER (NAME,AGE,SEX) VALUES ('val2_1', 'val2_2', 'val2_3')
   INTO USER (NAME,AGE,SEX) VALUES ('val3_1', 'val3_2', 'val3_3')
SELECT 1 FROM DUAL;

可以發(fā)現(xiàn)Oracle的兩種寫法都比較的麻煩,批量插入也壓根沒有減少插入的列名。除此之外,另一個(gè)麻煩的事情就是,在企業(yè)開發(fā)中,一套軟件系統(tǒng)可能需要支持多套數(shù)據(jù)庫的,因此這條新增的操作,就得適配兩套數(shù)據(jù)庫,維護(hù)兩套SQL,大大地增加了開發(fā)成本。

那么有沒有一種通用的寫法呢?答案是有的。

通用寫法:

INSERT INTO USER (NAME,AGE,SEX)
    select ('val1_1', 'val1_2', 'val1_3') from dual union all
    select ('val2_1', 'val2_2', 'val2_3') from dual union all
    select ('val3_1', 'val3_2', 'val3_3') from dual

這樣一來,既簡單又能少維護(hù)一套SQL,兩全其美。

下面是XML文件里各種寫法的代碼。

<!--MySQL的批量插入-->
<insert id="batchInsertUser" databaseId="mysql">
   INSERT INTO USER 
            (NAME,AGE,SEX)
   VALUES
    <foreach collection="userList" index="index" item="user" separator=",">
            (#{user.name},#{user.age},#{user.sex})
  </foreach>
</insert>
<!--Oracle的批量插入-->
<insert id="batchInsertUser" databaseId="oracle">
  BEGIN
  <foreach collection="userList" index="index" item="user" separator=";">
   INSERT INTO USER 
            (NAME,AGE,SEX)
   VALUES
            (#{user.name},#{user.age},#{user.sex})
  </foreach>
  ;END;
</insert>

仔細(xì)觀察MySQL和Oracle的寫法,因?yàn)镸ySQL支持上述在VALUES后面直接插入多條數(shù)據(jù),因此。foreach標(biāo)簽只需要循環(huán)遍歷出VALUES后面()里的內(nèi)容即可;而Oracle因?yàn)椴恢С诌@種寫法因此需要循環(huán)遍歷整個(gè)INSERT語句。

<!--通用的批量插入-->
<insert id="batchInsertUser" databaseId="mysql">
   INSERT INTO USER 
            (NAME,AGE,SEX)
  <foreach collection="userList" index="index" item="user" separator="union all">
     SELECT
            (#{user.name},#{user.age},#{user.sex})
     FROM DUAL
  </foreach>
</insert>

總結(jié)

到此這篇關(guān)于MySQL和Oracle批量插入SQL的通用寫法的文章就介紹到這了,更多相關(guān)MySQL和Oracle批量插入SQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在 Windows 10 上安裝 解壓縮版 MySql(推薦)

    在 Windows 10 上安裝 解壓縮版 MySql(推薦)

    這篇文章主要介紹了在 Windows 10 上安裝 解壓縮版 MySql(推薦)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • Mysql中通過生日計(jì)算年齡的多種方法

    Mysql中通過生日計(jì)算年齡的多種方法

    本文給大家分享mysql通過生日計(jì)算年齡的方法,每一種方法都非常不錯(cuò),需要的朋友參考下吧
    2018-03-03
  • 詳解Mysql中的視圖

    詳解Mysql中的視圖

    mysql中的視圖,視圖與表有很多相似的地方,視圖也是由若干個(gè)字段以及若干條記錄構(gòu)成,視圖也可以作為select語句的數(shù)據(jù)源
    2017-04-04
  • MySQL借助DB實(shí)現(xiàn)分布式鎖思路詳解

    MySQL借助DB實(shí)現(xiàn)分布式鎖思路詳解

    這篇文章主要給大家介紹了關(guān)于MySQL借助DB實(shí)現(xiàn)分布式鎖思路的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Mysql8中的無插件方式審計(jì)

    Mysql8中的無插件方式審計(jì)

    這篇文章主要介紹了Mysql8中的無插件方式審計(jì),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MySql通過ip地址進(jìn)行訪問的方法

    MySql通過ip地址進(jìn)行訪問的方法

    這篇文章主要介紹了MySql通過ip地址進(jìn)行訪問的方法,首先要登錄mysql,切換數(shù)據(jù)庫然后授權(quán),具體代碼詳情大家參考下本文
    2018-06-06
  • Linux CentOS MySQL數(shù)據(jù)庫安裝配置教程

    Linux CentOS MySQL數(shù)據(jù)庫安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了Linux CentOS MySQL數(shù)據(jù)庫的安裝配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 專業(yè)級的MySQL開發(fā)設(shè)計(jì)規(guī)范及SQL編寫規(guī)范

    專業(yè)級的MySQL開發(fā)設(shè)計(jì)規(guī)范及SQL編寫規(guī)范

    這篇文章主要介紹了專業(yè)級的MySQL開發(fā)設(shè)計(jì)規(guī)范及SQL編寫規(guī)范,需要的朋友可以參考下
    2020-11-11
  • MySQL中的布爾值,怎么存儲(chǔ)false或true

    MySQL中的布爾值,怎么存儲(chǔ)false或true

    這篇文章主要介紹了MySQL中的布爾值,怎么存儲(chǔ)false或true的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • mysql常用命令匯總介紹

    mysql常用命令匯總介紹

    本文給大家匯總了一下mysql常用的命令行指令,包括設(shè)置更改mysqlroot密碼,連接mysql等,非常的細(xì)致全面,并附上運(yùn)行效果截圖,希望大家能夠喜歡
    2018-03-03

最新評論

英吉沙县| 兰西县| 南涧| 扬中市| 宣恩县| 江油市| 中山市| 扶沟县| 长丰县| 娄底市| 醴陵市| 邹平县| 东兰县| 长治市| 罗江县| 鄱阳县| 怀宁县| 通榆县| 会宁县| 同仁县| 桂东县| 扎鲁特旗| 奈曼旗| 毕节市| 建瓯市| 满洲里市| 堆龙德庆县| 益阳市| 彭水| 广东省| 沧州市| 八宿县| 文成县| 焉耆| 鹤壁市| 关岭| 高青县| 高雄市| 上杭县| 信宜市| 陕西省|