MySQL与Oracle如何insert into多个values

本文介绍了在Oracle和MySQL数据库中批量插入多条记录的方法。对于Oracle,可以通过使用UNION ALL结合SELECT FROM DUAL的方式或者INSERT ALL语句实现。MySQL则可以直接在INSERT INTO语句后的VALUES部分列出多组值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Oracle一次插入多条记录

方式1:

要向数据库中写入多条记录,记录集已经确定,如果一次一次插入势必影响效率。

解决方法:


?

注意:上面最后一个select之后没有union all,否则报错。

方式2:

*************************************************************************************

二、MySQL中可以使用如下格式的插入语句:

insert into persons 
  (id_p, lastname , firstName, city )
  values
  (200,'haha' , 'deng' , 'shenzhen'),
  (201,'haha2' , 'deng' , 'GD'),
  (202,'haha3' , 'deng' , 'Beijing');

这样就批量插入数据了。

*****************************************************************************************************************

*****************************************************************************************************************

附录:


--Oracle插入多条记录到一个表中:
INSERT ALL
 INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3')
 INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3')
 INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3')
 SELECT * FROM dual;


--Oracle插入多条记录到多个表中:
INSERT ALL
 INTO product (product_id,product_name) VALUES (1000, 'Disc')
 INTO product (product_id, product_name) VALUES (2000, 'Floppy')
 INTO customers (customer_id, customer_name, city) VALUES (999999, 'Anderson Construction', 'New York')
 SELECT * FROM dual;
-----------------------------------------------------------------------------------------------------------------------------------------
--Oracle插入多条记录到一个表中:
INSERT INTO tablename (col1,col2,...)
    SELECT * FROM (
        SELECT 'a1','a2',... FROM dual UNION ALL
        SELECT 'a11','a22',... FROM dual UNION ALL
        SELECT 'a111','a222',... FROM dual UNION ALL
        SELECT 'a1111','a2222',... FROM dual
   )
-----------------------------------------------------------------------------------------------------------------------------------------


### Oracle 中使用 `INSERT INTO` 插入多条记录 在 Oracle 数据库中,标准 SQL 的 `INSERT INTO` 语句并不直接支持一次性插入多条记录的方式(如某些其他数据库中的 `(value1, value2), (value3, value4)` 形式)。不过可以通过以下几种方法实现这一需求。 #### 方法一:通过多次调用 `INSERT INTO` 最简单的办法是逐条执行 `INSERT INTO` 语句。虽然这种方式效率较低,但在少量数据的情况下仍然可行。 ```sql INSERT INTO 表名 (列1, 列2) VALUES ('值1', '值2'); INSERT INTO 表名 (列1, 列2) VALUES ('值3', '值4'); ``` 这种方法适用于小型脚本或手动操作场景[^1]。 --- #### 方法二:利用 `UNION ALL` 实现单次插入多条记录 Oracle 支持通过子查询结合 `UNION ALL` 来一次性插入多条记录。以下是具体的语法示例: 假设有一个名为 `employees` 的表,结构为 `(id NUMBER, name VARCHAR2(50))`,可以这样写: ```sql INSERT INTO employees (id, name) SELECT 1, 'Alice' FROM DUAL UNION ALL SELECT 2, 'Bob' FROM DUAL UNION ALL SELECT 3, 'Charlie' FROM DUAL; ``` 这里的关键在于使用了 `DUAL` 表作为虚拟数据源,并通过 `UNION ALL` 将多个独立的 `SELECT` 查询组合在一起[^4]。 --- #### 方法三:基于现有表的数据插入 如果需要插入的是来自另一个表的数据,则可以直接使用 `INSERT INTO ... SELECT` 结构。例如: ```sql -- 假设 source_table 是已有数据的表 INSERT INTO target_table (col1, col2, col3) SELECT colA, colB, colC FROM source_table WHERE condition; ``` 此方法特别适合于从一个表复制到另一个表的情况[^3]。 --- #### 方法四:借助存储过程或 PL/SQL 批量处理 对于更复杂的批量插入需求,可以编写存储过程或者使用匿名块来完成任务。下面是一个简单的例子: ```plsql BEGIN FOR i IN 1..3 LOOP INSERT INTO employees (id, name) VALUES (i, 'Employee_' || TO_CHAR(i)); END LOOP; END; / ``` 尽管这并不是一条单独的 SQL 语句,但它能够高效地完成大量数据的插入工作[^1]。 --- #### 总结 综上所述,在 Oracle 中无法像 MySQL 那样直接写出带有逗号分隔的多值列表形式的 `INSERT INTO` 语句;但是,通过巧妙运用 `UNION ALL` 或者 `INSERT INTO ... SELECT` 等技术手段,同样可以达到目的并保持较高的灵活性和性能水平[^2][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值