📜  oracle 多次插入 - SQL (1)

📅  最后修改于: 2023-12-03 14:44:56.458000             🧑  作者: Mango

Oracle 多次插入 - SQL

Oracle 是一种关系型数据库管理系统,支持多种方式插入数据。在某些场景下,需要一次插入多行数据,本文将介绍如何在 Oracle 中执行多次插入。

单个插入

在 Oracle 中,单个插入数据可以使用 INSERT INTO 语句,语法如下:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...);

其中,table_name 是表的名称,column1, column2, column3 是表中的列名,value1, value2, value3 是要插入的值。

多次插入

当需要一次性插入多条记录时,可以使用 INSERT INTO SELECT 语句。语法如下:

INSERT INTO table_name (column1, column2, column3,...)
SELECT value1, value2, value3,...
FROM some_table;

其中,table_name 是表的名称,column1, column2, column3 是表中的列名,value1, value2, value3 是要插入的值,some_table 是数据来源表的名称。

例如,插入两条记录:

INSERT INTO employees (id, name, age)
SELECT 1, '张三', 20 FROM dual
UNION ALL
SELECT 2, '李四', 25 FROM dual;
批量插入

在 Oracle 中,还可以使用 FORALL ... INSERT 语句一次性插入多行数据。FORALL 语句是一个 PL/SQL 语句,可以将数组或集合中的数据一起插入到表中。

语法如下:

DECLARE
  TYPE id_array_t IS TABLE OF NUMBER;
  TYPE name_array_t IS TABLE OF VARCHAR2(100);
  TYPE age_array_t IS TABLE OF NUMBER;
  
  ids id_array_t := id_array_t(1, 2, 3, 4);
  names name_array_t := name_array_t('张三', '李四', '王五', '赵六');
  ages age_array_t := age_array_t(20, 25, 30, 35);
BEGIN
  FORALL i IN 1 .. ids.COUNT
    INSERT INTO employees (id, name, age)
    VALUES (ids(i), names(i), ages(i));
END;

其中,ids, names, ages 分别是要插入的 id、name、age 数据,FORALL 语句循环插入数据,i 是循环变量。

总结

在 Oracle 中,可以使用 INSERT INTO SELECT 语句或 FORALL ... INSERT 语句一次性插入多条记录。根据实际情况,选择适合的插入方式。