在Oracle SQL中,有多种方式可以向表中插入数据,下面为你详细介绍常见的几种插入方法及示例。

1. 插入单条记录

当你需要向表中插入一条记录时,可以使用INSERT INTO语句。

语法
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
示例

假设存在一个名为employees的表,包含employee_idfirst_namelast_namesalary列。

-- 创建示例表
CREATE TABLE employees (
    employee_id NUMBER,
    first_name VARCHAR2(50),
    last_name VARCHAR2(50),
    salary NUMBER
);

-- 插入单条记录
INSERT INTO employees (employee_id, first_name, last_name, salary)
VALUES (1, 'John', 'Doe', 5000);

2. 省略列名插入

如果要插入的数据顺序与表中列的定义顺序一致,并且要插入所有列的值,可以省略列名。

语法
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
示例
INSERT INTO employees
VALUES (2, 'Jane', 'Smith', 6000);

3. 插入多条记录

可以使用多个VALUES子句在一条INSERT INTO语句中插入多条记录。

语法
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1_1, value1_2, value1_3, ...),
       (value2_1, value2_2, value2_3, ...),
       ...;
示例
INSERT INTO employees (employee_id, first_name, last_name, salary)
VALUES (3, 'Bob', 'Johnson', 4500),
       (4, 'Alice', 'Williams', 5500);

4. 从其他表插入数据

可以使用INSERT INTO ... SELECT语句将一个表中的数据插入到另一个表中。

语法
INSERT INTO table_name (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM another_table
WHERE condition;
示例

假设存在一个临时表temp_employees,其结构与employees表相同,现在要将temp_employees表中工资大于 5000 的记录插入到employees表中。

-- 创建临时表
CREATE TABLE temp_employees AS
SELECT * FROM employees WHERE 1 = 0;

-- 向临时表插入一些数据
INSERT INTO temp_employees (employee_id, first_name, last_name, salary)
VALUES (5, 'Tom', 'Brown', 5200),
       (6, 'Sara', 'Davis', 4800);

-- 从临时表插入数据到 employees 表
INSERT INTO employees (employee_id, first_name, last_name, salary)
SELECT employee_id, first_name, last_name, salary
FROM temp_employees
WHERE salary > 5000;

注意事项

  • 数据类型匹配:插入的值的数据类型必须与表中对应列的数据类型兼容,否则会出现错误。
  • 空值处理:如果表中某列允许为空,在插入数据时可以不提供该列的值,或者显式插入NULL
  • 主键和唯一约束:如果表中有主键或唯一约束,插入的数据必须保证这些约束不被违反。