在Oracle SQL中,有多种方式可以向表中插入数据,下面为你详细介绍常见的几种插入方法及示例。
1. 插入单条记录
当你需要向表中插入一条记录时,可以使用INSERT INTO语句。
语法
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);示例
假设存在一个名为employees的表,包含employee_id、first_name、last_name和salary列。
-- 创建示例表
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。 - 主键和唯一约束:如果表中有主键或唯一约束,插入的数据必须保证这些约束不被违反。

















