暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle insert all的用法

原创 慢慢 2024-12-31
415

INSERT ALL 是 Oracle SQL 中的一种多行插入语法,允许你在一条 SQL 语句中将多条记录插入到同一个表或多个表中。它通常用于批量插入数据,能提高插入效率,避免重复写多条 INSERT 语句。

INSERT ALL 基本语法

sql

INSERT ALL
    INTO table1 (column1, column2, ...)
        VALUES (value1, value2, ...)
    INTO table2 (column1, column2, ...)
        VALUES (value1, value2, ...)
    ...
SELECT * FROM dual;
  • INSERT ALL 后面可以跟多个 INTO 子句,每个子句指定一个表和插入的列及对应的值。
  • SELECT * FROM dual 用来触发插入操作。在 Oracle 中,dual 是一个虚拟表,通常用来生成一行数据。

示例 1:插入多条数据到同一张表

假设有一个表 employees,我们要插入多条记录。

sql

INSERT ALL
    INTO employees (employee_id, first_name, last_name, hire_date)
        VALUES (1001, 'John', 'Doe', '2024-01-01')
    INTO employees (employee_id, first_name, last_name, hire_date)
        VALUES (1002, 'Jane', 'Smith', '2024-02-01')
    INTO employees (employee_id, first_name, last_name, hire_date)
        VALUES (1003, 'Michael', 'Johnson', '2024-03-01')
SELECT * FROM dual;

这个语句将三条记录插入到 employees 表中。

示例 2:插入数据到多个表

假设你有两个表:employeesdepartments,你想在一条 SQL 语句中插入数据到这两个表。

sql

INSERT ALL
    INTO employees (employee_id, first_name, last_name, department_id)
        VALUES (1001, 'John', 'Doe', 10)
    INTO employees (employee_id, first_name, last_name, department_id)
        VALUES (1002, 'Jane', 'Smith', 20)
    INTO departments (department_id, department_name)
        VALUES (10, 'Sales')
    INTO departments (department_id, department_name)
        VALUES (20, 'Marketing')
SELECT * FROM dual;

这个语句将数据分别插入到 employeesdepartments 表中。

示例 3:使用条件插入

INSERT ALL 语句还可以结合 CASE 语句来根据条件选择插入的数据。比如:

sql

INSERT ALL
    INTO employees (employee_id, first_name, last_name, hire_date)
        VALUES (1001, 'John', 'Doe', CASE WHEN '2024-01-01' IS NOT NULL THEN '2024-01-01' ELSE SYSDATE END)
    INTO employees (employee_id, first_name, last_name, hire_date)
        VALUES (1002, 'Jane', 'Smith', '2024-02-01')
SELECT * FROM dual;

这个例子中,1001 号员工的 hire_date 值根据条件判断,如果日期为空则使用系统当前日期。

注意事项

  1. SELECT * FROM dualdual 是 Oracle 数据库中的一个虚拟表,通常用于生成一行数据。在 INSERT ALL 语句中,dual 用来触发数据插入操作。

  2. 事务管理INSERT ALL 语句中的所有插入操作是作为一个事务执行的,所有插入要么都成功,要么都回滚。

  3. 性能INSERT ALL 相对于多次使用 INSERT INTO 语句更高效,因为它将多个插入操作合并为一个语句,从而减少了数据库的 I/O 操作。

总结

INSERT ALL 语句在 Oracle 中用于在一条 SQL 语句中插入多条记录,并且支持插入多张表。它的使用能够提高插入数据的效率,并简化代码。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论