Oracle使用SQL一次性向表中插入多行数据

1. 创建表

sql 复制代码
-- 创建销售表
CREATE TABLE sales (
    id NUMBER PRIMARY KEY,
    product_id NUMBER,
    sales_description VARCHAR2(50)
);

2. 插入数据

2.1 使用INSERT ALL 插入多行

语法如下:

sql 复制代码
INSERT ALL
  INTO 表名 (列1, 列2, ..., 列N) VALUES (值1, 值2, ..., 值N)
  INTO 表名 (列1, 列2, ..., 列N) VALUES (值1, 值2, ..., 值N)
  ...
  INTO 表名 (列1, 列2, ..., 列N) VALUES (值1, 值2, ..., 值N)
SELECT * FROM DUAL;

示例:

sql 复制代码
-- 插入销售表数据
INSERT ALL 
INTO Sales(Id, Product_Id, Sales_Description) VALUES(1, 1, 'High') 
INTO Sales(Id, Product_Id, Sales_Description) VALUES(2, 2, 'Medium') 
INTO Sales(Id, Product_Id, Sales_Description) VALUES(3, 3, 'Low')
SELECT * FROM Dual;
COMMIT;
2.2 使用SELECT 语法插入多行

语法如下:

sql 复制代码
INSERT INTO 表名 (列1, 列2, ..., 列N)
SELECT 值1, 值2, ..., 值N FROM DUAL
UNION ALL
SELECT 值1, 值2, ..., 值N FROM DUAL
UNION ALL
...
SELECT 值1, 值2, ..., 值N FROM DUAL;

示例:

sql 复制代码
INSERT INTO Sales(Id, Product_Id, Sales_Description)
	SELECT 1, 1, 'High' FROM Dual
	UNION ALL
	SELECT 2, 2, 'Medium' FROM Dual
	UNION ALL
	SELECT 3, 3, 'Low' FROM Dual;
COMMIT;

注意事项

  • 数据类型匹配:插入的值必须与表中列的数据类型一致。
  • 主键/唯一约束:如果表中有主键或唯一约束,插入的值不能违反这些约束。
  • 如果需要插入大量数据,建议使用批量插入的方式,例如通过 PL/SQL 块或工具(如 SQL*Loader)来提高效率。
相关推荐
java叶新东老师12 分钟前
PowerDesigner 画ER图并生成sql 教程
数据库·sql
Jonariguez42 分钟前
Mysql InnoDB存储引擎
数据库·mysql
nbsaas-boot2 小时前
SQL Server 窗口函数全指南(函数用法与场景)
开发语言·数据库·python·sql·sql server
Y.ppm2 小时前
数分思维12:SQL技巧与分析方法
数据库·sql
森叶2 小时前
Claude Code 安装向量数据库MCP服务
数据库
bestsun9992 小时前
Time drifts can result in unexpected behavior such as time-outs.
数据库·oracle
waveee1233 小时前
学习嵌入式的第三十四天-数据结构-(2025.7.29)数据库
数据结构·数据库·学习
何传令3 小时前
SQL优化系统解析
数据库·sql·mysql
找不到、了3 小时前
Redis内存使用耗尽情况分析
数据库·redis·缓存
DarkAthena3 小时前
【GaussDB】内存资源告急:深度诊断一起“memory temporarily unavailable“故障
数据库·gaussdb