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

Oracle中如何使用單個(gè)inert語(yǔ)句實(shí)現(xiàn)插入多行

 更新時(shí)間:2025年06月06日 09:59:12   作者:Stephen·You  
這篇文章主要介紹了Oracle中如何使用單個(gè)inert語(yǔ)句實(shí)現(xiàn)插入多行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

最近項(xiàng)目中使用到了Oracle數(shù)據(jù)庫(kù),由于Oracle數(shù)據(jù)庫(kù)我已經(jīng)好幾年沒(méi)用過(guò)了,最近幾年用的幾乎都是MySQL數(shù)據(jù)庫(kù)。

在使用Oracle數(shù)據(jù)庫(kù)編寫(xiě)SQL語(yǔ)句的過(guò)程中,發(fā)現(xiàn)了有一些函數(shù)、語(yǔ)法、句式是不太熟悉的,或者說(shuō)是和MySQL有些區(qū)別的;因此最近我打算復(fù)習(xí)一下Oracle,同時(shí)在接下來(lái)的一段時(shí)間內(nèi)也會(huì)不定期更新一些關(guān)于Oracle數(shù)據(jù)庫(kù)的學(xué)習(xí)日記(文章),結(jié)合我個(gè)人的學(xué)習(xí)心得,也算是溫故而知新吧,希望能幫助到有需要的同伴。

問(wèn)題現(xiàn)象

今天在學(xué)習(xí)中遇到一個(gè)問(wèn)題:

如何在Oracle中,使用單個(gè)inert語(yǔ)句實(shí)現(xiàn)插入多行記錄呢?

問(wèn)題分析

由于最近幾年都是使用MySQL數(shù)據(jù)庫(kù)比較多,因此一開(kāi)始遇到這個(gè)問(wèn)題的時(shí)候,我其實(shí)是直接使用了MySQL中語(yǔ)法來(lái)解決這個(gè)問(wèn)題的,下面將使用Oracle最經(jīng)典的鏈接工具【PLSQL Developer】來(lái)進(jìn)行測(cè)試,過(guò)程如下:

先簡(jiǎn)單建表:

-- 建表語(yǔ)句
CREATE TABLE BIZ_BREED_INFO (
    breed_id INTEGER PRIMARY KEY,
    biz_breed VARCHAR2(255),
    memo VARCHAR2(255)
);

COMMENT ON TABLE BIZ_BREED_INFO IS '業(yè)務(wù)品種表';
COMMENT ON COLUMN BIZ_BREED_INFO.breed_id IS '品種id';
COMMENT ON COLUMN BIZ_BREED_INFO.biz_breed IS '業(yè)務(wù)品種名稱(chēng)';
COMMENT ON COLUMN BIZ_BREED_INFO.memo IS '備注';

然后使用一個(gè)insert語(yǔ)句插入多行記錄:

INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES 
(1, '稻谷', '用于糧食生產(chǎn)和飼料'),
(2, '小麥', '用于面粉生產(chǎn)和飼料'),
(3, '玉米', '用于飼料、淀粉和乙醇生產(chǎn)'),
(4, '大豆', '用于食用油和蛋白質(zhì)飼料'),
(5, '棉花', '用于紡織工業(yè)'),
(6, '花生', '用于食用油和蛋白質(zhì)'),
(7, '馬鈴薯', '用于食品和工業(yè)淀粉'),
(8, '甘蔗', '用于制糖和乙醇生產(chǎn)'),
(9, '蘋(píng)果', '用于鮮食和果汁'),
(10, '橙子', '用于鮮食和果汁'),
(11, '茶葉', '用于飲品和出口'),
(12, '蔬菜', '用于鮮食和加工'),
(13, '奶牛', '用于牛奶生產(chǎn)'),
(14, '豬', '用于肉類(lèi)生產(chǎn)'),
(15, '雞', '用于蛋和肉類(lèi)生產(chǎn)'),
(16, '魚(yú)類(lèi)', '用于水產(chǎn)養(yǎng)殖'),
(17, '蝦類(lèi)', '用于水產(chǎn)養(yǎng)殖'),
(18, '蟹類(lèi)', '用于水產(chǎn)養(yǎng)殖'),
(19, '蜂產(chǎn)品', '用于蜂蜜、蜂王漿等'),
(20, '煙草', '用于卷煙和其他煙草制品');

沒(méi)想到一執(zhí)行就報(bào)錯(cuò):

查了一下發(fā)現(xiàn),原來(lái)是Oracle不支持這樣的寫(xiě)法。

雖然我們都知道可以執(zhí)行多個(gè)inert語(yǔ)句來(lái)實(shí)現(xiàn)多行數(shù)據(jù)記錄的插入,如下:

INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (1, '稻谷', '用于糧食生產(chǎn)和飼料');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (2, '小麥', '用于面粉生產(chǎn)和飼料');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (3, '玉米', '用于飼料、淀粉和乙醇生產(chǎn)');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (4, '大豆', '用于食用油和蛋白質(zhì)飼料');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (5, '棉花', '用于紡織工業(yè)');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (6, '花生', '用于食用油和蛋白質(zhì)');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (7, '馬鈴薯', '用于食品和工業(yè)淀粉');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (8, '甘蔗', '用于制糖和乙醇生產(chǎn)');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (9, '蘋(píng)果', '用于鮮食和果汁');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (10, '橙子', '用于鮮食和果汁');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (11, '茶葉', '用于飲品和出口');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (12, '蔬菜', '用于鮮食和加工');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (13, '奶牛', '用于牛奶生產(chǎn)');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (14, '豬', '用于肉類(lèi)生產(chǎn)');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (15, '雞', '用于蛋和肉類(lèi)生產(chǎn)');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (16, '魚(yú)類(lèi)', '用于水產(chǎn)養(yǎng)殖');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (17, '蝦類(lèi)', '用于水產(chǎn)養(yǎng)殖');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (18, '蟹類(lèi)', '用于水產(chǎn)養(yǎng)殖');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (19, '蜂產(chǎn)品', '用于蜂蜜、蜂王漿等');
INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (20, '煙草', '用于卷煙和其他煙草制品');

但是,難道Oracle并不支持使用單個(gè)inert語(yǔ)句實(shí)現(xiàn)插入多行記錄嗎?

抱著這樣的疑問(wèn),我再次搜集了相關(guān)資料,才發(fā)現(xiàn)其實(shí)方法還是有的,只是sql寫(xiě)起來(lái)會(huì)顯得很冗余。

解決方法

1、insert into ... union all句式

句式規(guī)則如下:

INSERT INTO 表名(字段列表)
select 字段值列表 from dual
union all
select 字段值列表 from dual
union all

......

SQL示例如下:

INSERT INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO)
SELECT 1, '稻谷', '用于糧食生產(chǎn)和飼料' FROM DUAL UNION ALL
SELECT 2, '小麥', '用于面粉生產(chǎn)和飼料' FROM DUAL UNION ALL
SELECT 3, '玉米', '用于飼料、淀粉和乙醇生產(chǎn)' FROM DUAL UNION ALL
SELECT 4, '大豆', '用于食用油和蛋白質(zhì)飼料' FROM DUAL UNION ALL
SELECT 5, '棉花', '用于紡織工業(yè)' FROM DUAL UNION ALL
SELECT 6, '花生', '用于食用油和蛋白質(zhì)' FROM DUAL UNION ALL
SELECT 7, '馬鈴薯', '用于食品和工業(yè)淀粉' FROM DUAL UNION ALL
SELECT 8, '甘蔗', '用于制糖和乙醇生產(chǎn)' FROM DUAL UNION ALL
SELECT 9, '蘋(píng)果', '用于鮮食和果汁' FROM DUAL UNION ALL
SELECT 10, '橙子', '用于鮮食和果汁' FROM DUAL UNION ALL
SELECT 11, '茶葉', '用于飲品和出口' FROM DUAL UNION ALL
SELECT 12, '蔬菜', '用于鮮食和加工' FROM DUAL UNION ALL
SELECT 13, '奶牛', '用于牛奶生產(chǎn)' FROM DUAL UNION ALL
SELECT 14, '豬', '用于肉類(lèi)生產(chǎn)' FROM DUAL UNION ALL
SELECT 15, '雞', '用于蛋和肉類(lèi)生產(chǎn)' FROM DUAL UNION ALL
SELECT 16, '魚(yú)類(lèi)', '用于水產(chǎn)養(yǎng)殖' FROM DUAL UNION ALL
SELECT 17, '蝦類(lèi)', '用于水產(chǎn)養(yǎng)殖' FROM DUAL UNION ALL
SELECT 18, '蟹類(lèi)', '用于水產(chǎn)養(yǎng)殖' FROM DUAL UNION ALL
SELECT 19, '蜂產(chǎn)品', '用于蜂蜜、蜂王漿等' FROM DUAL UNION ALL
SELECT 20, '煙草', '用于卷煙和其他煙草制品' FROM DUAL;

執(zhí)行成功:

執(zhí)行成功后記得提交事務(wù):

表數(shù)據(jù)如下:

2、insert all into ...select 1 from dual句式

句式規(guī)則如下:

INSERT ALL
INTO 表名(字段列表) VALUES (字段值列表)
INTO 表名(字段列表) VALUES (字段值列表)
...
SELECT 1 FROM DUAL;

由于在測(cè)試完第1種方法后,表中已經(jīng)插入了20行數(shù)據(jù),所以在測(cè)試第2種方法之前,需要先刪除掉,執(zhí)行刪除sql:

選擇是,然后提交事務(wù):

再次查詢(xún)表數(shù)據(jù):

然后使用第2種句式插入數(shù)據(jù),SQL示例如下:

INSERT ALL
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (1, '稻谷', '用于糧食生產(chǎn)和飼料')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (2, '小麥', '用于面粉生產(chǎn)和飼料')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (3, '玉米', '用于飼料、淀粉和乙醇生產(chǎn)')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (4, '大豆', '用于食用油和蛋白質(zhì)飼料')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (5, '棉花', '用于紡織工業(yè)')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (6, '花生', '用于食用油和蛋白質(zhì)')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (7, '馬鈴薯', '用于食品和工業(yè)淀粉')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (8, '甘蔗', '用于制糖和乙醇生產(chǎn)')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (9, '蘋(píng)果', '用于鮮食和果汁')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (10, '橙子', '用于鮮食和果汁')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (11, '茶葉', '用于飲品和出口')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (12, '蔬菜', '用于鮮食和加工')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (13, '奶牛', '用于牛奶生產(chǎn)')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (14, '豬', '用于肉類(lèi)生產(chǎn)')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (15, '雞', '用于蛋和肉類(lèi)生產(chǎn)')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (16, '魚(yú)類(lèi)', '用于水產(chǎn)養(yǎng)殖')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (17, '蝦類(lèi)', '用于水產(chǎn)養(yǎng)殖')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (18, '蟹類(lèi)', '用于水產(chǎn)養(yǎng)殖')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (19, '蜂產(chǎn)品', '用于蜂蜜、蜂王漿等')
  INTO BIZ_BREED_INFO (BREED_ID, BIZ_BREED, MEMO) VALUES (20, '煙草', '用于卷煙和其他煙草制品')
SELECT 1 FROM DUAL;

執(zhí)行成功:

提交事務(wù):

表數(shù)據(jù)如下:

總結(jié)

可以看到在Oracle中,確實(shí)是可以通過(guò)單個(gè)inert語(yǔ)句實(shí)現(xiàn)插入多行記錄的!??!

但是缺點(diǎn)也很明顯,就是和MySQL的語(yǔ)句相比,SQL代碼???很冗余。尤其是第2種句式,書(shū)寫(xiě)起來(lái)的代碼,甚至比直接寫(xiě)20個(gè)insert語(yǔ)句還要多。當(dāng)然第一種句式書(shū)寫(xiě)起來(lái)的代碼和直接寫(xiě)20個(gè)insert語(yǔ)句其實(shí)也沒(méi)差多少。

相信大家都已經(jīng)了解并學(xué)會(huì)了在Oracle中使用單個(gè)inert語(yǔ)句實(shí)現(xiàn)插入多行記錄

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

相關(guān)文章

  • Oracle  call 和 exec的詳解及區(qū)別

    Oracle call 和 exec的詳解及區(qū)別

    這篇文章主要介紹了Oracle call 和 exec的詳解及區(qū)別的相關(guān)資料,這里舉例說(shuō)明了它們之間的區(qū)別,需要的朋友可以參考下
    2016-11-11
  • Oracle數(shù)據(jù)庫(kù)登陸錯(cuò)誤:ORA-28000:the account is locked問(wèn)題及解決

    Oracle數(shù)據(jù)庫(kù)登陸錯(cuò)誤:ORA-28000:the account is locked

    Oracle數(shù)據(jù)庫(kù)賬號(hào)鎖定及解鎖方法,針對(duì)ORA-2800:theaccountislocked錯(cuò)誤,本文詳細(xì)介紹了賬號(hào)鎖定的原因及解鎖步驟及并并建議建議包括并并并包括處理頻繁鎖定的方法和建議重新設(shè)置連接池連接數(shù)is或釋放用戶(hù)鎖
    2026-05-05
  • Oracle如何編寫(xiě)一個(gè)sqlldr實(shí)例

    Oracle如何編寫(xiě)一個(gè)sqlldr實(shí)例

    這篇文章主要介紹了Oracle如何編寫(xiě)一個(gè)sqlldr實(shí)例,SQL*Loader是oracle的高速批量數(shù)據(jù)加載工具,這是一個(gè)非常有用的工具,可用于從多種平面文件格式向Oracle數(shù)據(jù)庫(kù)中加載數(shù)據(jù)。SQLLDR可以在極短的時(shí)間內(nèi)加載數(shù)量龐大的數(shù)據(jù),需要的朋友可以參考下
    2023-07-07
  • ORACLE學(xué)習(xí)筆記-查詢(xún)篇

    ORACLE學(xué)習(xí)筆記-查詢(xún)篇

    前后發(fā)了好幾篇ORACLE的基礎(chǔ)知識(shí)了,主要還是自己做學(xué)習(xí)筆記的,加深印象,今天來(lái)看下ORACLE的查詢(xún)語(yǔ)句
    2014-08-08
  • Oracle數(shù)據(jù)遷移MySQL的三種簡(jiǎn)單方法

    Oracle數(shù)據(jù)遷移MySQL的三種簡(jiǎn)單方法

    對(duì)于許多企業(yè)而言,遷移數(shù)據(jù)庫(kù)時(shí)最大的挑戰(zhàn)之一是如何從一個(gè)數(shù)據(jù)庫(kù)平臺(tái)順利遷移到另一個(gè)平臺(tái),下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)遷移MySQL的三種簡(jiǎn)單方法,需要的朋友可以參考下
    2023-06-06
  • Oracle數(shù)據(jù)庫(kù)表中字段順序的修改方法

    Oracle數(shù)據(jù)庫(kù)表中字段順序的修改方法

    這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)表中字段順序的修改方法,在介紹修改的方法之前先給大家介紹了Oracle數(shù)據(jù)庫(kù)表新建字段的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Oracle中Union與Union All的區(qū)別(適用多個(gè)數(shù)據(jù)庫(kù))

    Oracle中Union與Union All的區(qū)別(適用多個(gè)數(shù)據(jù)庫(kù))

    如果我們需要將兩個(gè)select語(yǔ)句的結(jié)果作為一個(gè)整體顯示出來(lái),我們就需要用到union或者union all關(guān)鍵字。union(或稱(chēng)為聯(lián)合)的作用是將多個(gè)結(jié)果合并在一起顯示出來(lái)
    2012-07-07
  • Oracle In和exists not in和not exists的比較分析

    Oracle In和exists not in和not exists的比較分析

    一個(gè)是問(wèn)in exist的區(qū)別,一個(gè)是not in和not exists的區(qū)別
    2009-08-08
  • Oracle表索引查看常見(jiàn)的方法總結(jié)

    Oracle表索引查看常見(jiàn)的方法總結(jié)

    索引是數(shù)據(jù)庫(kù)系統(tǒng)中的一種數(shù)據(jù)結(jié)構(gòu),用于加快查詢(xún)的速度,在Oracle中可以在表或視圖上創(chuàng)建索引,這篇文章主要給大家介紹了關(guān)于Oracle表索引查看常見(jiàn)方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • ORACLE隨機(jī)數(shù)DBMS_RANDOM包

    ORACLE隨機(jī)數(shù)DBMS_RANDOM包

    這篇文章主要介紹了ORACLE隨機(jī)數(shù)DBMS_RANDOM包,通過(guò)dbms_random包調(diào)用隨機(jī)數(shù)的方法大致有4種,具體哪4種請(qǐng)看本篇文章吧
    2015-09-09

最新評(píng)論

商城县| 宁强县| 江津市| 梅河口市| 鹤峰县| 米林县| 舒兰市| 南靖县| 南汇区| 富裕县| 台州市| 宁阳县| 青田县| 黄骅市| 桃园市| 边坝县| 马山县| 德化县| 甘孜| 岐山县| 余庆县| 大石桥市| 佛学| 天祝| 平武县| 无锡市| 大荔县| 平南县| 当涂县| 威信县| 美姑县| 莲花县| 娱乐| 许昌县| 昔阳县| 利川市| 江城| 安阳市| 西安市| 萝北县| 红安县|