oracle学习——插入多行数据到表中

本文详细介绍了在SQL中使用insert into...select...的方法进行批量插入多行记录的操作,包括具体语法和实例演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

insert的语法,使用values时,一次只能插入一条记录。

解决办法:

插入多行,一般使用insert into .... select ...,子查询的方式。
如你的例子:
一、

insert all
into students values ('0515101143','XXX','','OOOOO')
into students values ('0515102003','XX','','OOOOO')
select * from dual;


二、

 insert into students
select 0515101145,'XXX','','OOOOO' from dual
union

select 0515102005,'XX','','OOOOO' from dual;


### 在 Oracle 数据库中一次性插入多条数据Oracle 中,有多种方法可以实现一次性的插入多条记录。以下是几种常见的技术及其适用场景: #### 使用 `INSERT ALL` 语法 通过 `INSERT ALL` 可以在一个命令中向同一张或多张插入多行数据。这种方法适用于需要显式定义每一条要插入数据的情况。 ```sql INSERT ALL INTO your_table (column1, column2) VALUES ('value1', 'value2') INTO your_table (column1, column2) VALUES ('value3', 'value4') SELECT * FROM dual; ``` 上述代码展示了如何利用 `INSERT ALL` 向一张名为 `your_table` 的插入两条记录[^1]。 #### 单个 `INSERT INTO` 配合多个 `VALUES` 子句 自 Oracle 版本更新以来,支持一种更为简洁的方式——可以在单一的 `INSERT INTO` 声明之后跟随多个 `VALUES` 子句来完成多行数据的一次性插入操作。 ```sql INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2'), ('value3', 'value4'); ``` 这种方式不仅简化了语法结构,还提高了可读性和执行效率[^2]。 #### 利用 `WITH` 子查询或虚拟创建临时数据集并插入 如果待插入数据量较大或者存在某种规律,则可以通过 `WITH` 关键字先构造出这些数据作为中间结果再进行实际插入动作;另外也可以直接基于某些逻辑达式的计算生成目标数据集合后再实施插入过程。 ```sql WITH temp_data AS ( SELECT LEVEL AS id, 'Row' || TO_CHAR(LEVEL) AS description FROM DUAL CONNECT BY LEVEL <= 5 ) INSERT INTO your_table (id_column, desc_column) SELECT id, description FROM temp_data; ``` 此例子说明了怎样借助伪列 `DUAL` 以及层次化查询功能来自动生成一系列连续编号连同相应描述一同存入指定的目标字段之中. #### 结合 `MERGE` 和 `VALUES` 实现复杂条件下的批量导入 当面临既有新增又有更新需求的情形下,“UPSERT”模式就显得尤为重要。“UPSERT”的概念是指根据特定匹配规则决定某一行到底是应该被修改还是添加新的实例进去。而这种情况下就可以考虑采用 `MERGE` 加上动态产生的源数据来进行处理: ```sql MERGE INTO target_table tgt USING ( VALUES (101,'John Doe','Engineer'), -- New row to be inserted/updated. (102,'Jane Smith','Manager') ) src(id,name,title) ON (tgt.id = src.id) WHEN MATCHED THEN UPDATE SET tgt.name=src.name,tgt.title=src.title WHEN NOT MATCHED THEN INSERT (id,name,title) VALUES(src.id,src.name,src.title); ``` 这里演示了一个典型的 UPSERT 场景,在其中我们指定了两个可能的新员工信息,并告诉数据库对于已存在的ID则仅需调整其名字职称即可,而对于不存在于当前格里的那些身份标识符关联的信息就要当作全新项加入到系统里去. ### 总结 以上介绍了四种主要途径用于解决在Oracle环境下高效地将大量离散型个体单元快速载入至持久存储介质上的难题。无论是简单重复的任务亦或是涉及业务判断更加复杂的混合型事务流程都能找到合适的解决方案予以应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值