oracle多行插入
在Oracle数据库中,当需要向表中插入多行数据时,可以使用多行插入语句来实现。多行插入语句可以大大提高数据插入的效率和性能,避免了逐行插入数据的繁琐过程。
使用INSERT INTO SELECT语句进行多行插入
在Oracle中,可以使用INSERT INTO SELECT语句来一次性插入多行数据。这种方法适用于已有数据来源的情况,比如从另一个表中查询数据并插入到目标表中。
示例代码如下:
INSERT INTO target_table
SELECT column1, column2, column3
FROM source_table
WHERE condition;
其中,target_table
是要插入数据的目标表,source_table
是数据来源的表,condition
是筛选条件。
假设有一个表emp
存储员工信息,现在想要将部分员工信息插入到另一个表new_emp
中,可以使用如下语句:
INSERT INTO new_emp
SELECT employee_id, last_name, job_id
FROM emp
WHERE department_id = 10;
这样就可以将emp
表中部门编号为10的员工信息插入到new_emp
表中。
使用INSERT ALL语句进行多行插入
除了INSERT INTO SELECT语句外,Oracle还提供了INSERT ALL语句来实现多行插入。INSERT ALL语句可以一次性插入多条记录到同一个表中。
示例代码如下:
INSERT ALL
INTO target_table (column1, column2) VALUES (value1, value2)
INTO target_table (column1, column2) VALUES (value3, value4)
...
INTO target_table (column1, column2) VALUES (valuen, valuem)
SELECT * FROM dual;
其中,target_table
是要插入数据的目标表,(column1, column2)
是要插入数据的列,(value1, value2)
是第一条记录要插入的值,以此类推。
假设想要将多条数据插入到new_emp
表中,可以使用如下语句:
INSERT ALL
INTO new_emp (employee_id, last_name, job_id) VALUES (101, 'Smith', 'SA')
INTO new_emp (employee_id, last_name, job_id) VALUES (102, 'Johnson', 'DEV')
INTO new_emp (employee_id, last_name, job_id) VALUES (103, 'Williams', 'QA')
SELECT * FROM dual;
这样就可以一次性将多条记录插入到new_emp
表中。
使用INSERT INTO VALUES语句进行多行插入
除了以上两种方法外,还可以使用INSERT INTO VALUES语句一次性插入多行数据。这种方法适用于需要手动指定每条记录的情况。
示例代码如下:
INSERT INTO target_table (column1, column2, column3)
VALUES (value1, value2, value3),
(value4, value5, value6),
...
(valuen, valuem, valuen+1);
其中,target_table
是要插入数据的目标表,(column1, column2, column3)
是要插入数据的列,(value1, value2, value3)
是第一条记录要插入的值,以此类推。
假设想要将多条数据插入到new_emp
表中,可以使用如下语句:
INSERT INTO new_emp (employee_id, last_name, job_id)
VALUES (101, 'Smith', 'SA'),
(102, 'Johnson', 'DEV'),
(103, 'Williams', 'QA');
这样就可以一次性将多条记录插入到new_emp
表中。
总结
在Oracle数据库中,可以通过多种方式实现多行插入,包括使用INSERT INTO SELECT语句、INSERT ALL语句和INSERT INTO VALUES语句。选择合适的方法可以提高数据插入的效率和性能,避免逐行插入数据的繁琐过程。在实际开发中,根据具体的需求和情况选择合适的插入方式是非常重要的。