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)来提高效率。
相关推荐
zzzzzz3101 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
倔强的石头_3 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
云技纵横3 天前
唯一索引 INSERT 死锁实战:5 秒复现交叉插入的 S 锁循环等待
sql·mysql
冬奇Lab4 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence4 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神4 天前
三、用户与权限管理
数据库·mysql
麦聪聊数据5 天前
数据服务化时代:企业数据能力输出的核心路径
数据库
shushangyun_5 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
DARLING Zero two♡5 天前
【MySQL数据库】数据类型与表约束
数据库·mysql
曹牧5 天前
Oracle EXPLAIN PLAN
数据库·oracle