当前位置: 首页 > news >正文

MySQL和Oracle批量插入SQL差异详解

文章目录

  • MySQL和Oracle批量插入SQL差异详解
    • 1. 基本批量插入语法
      • 1.1 MySQL批量插入
      • 1.2 Oracle批量插入
    • 2. 带序列的批量插入
      • 2.1 MySQL带自增ID的批量插入
      • 2.2 Oracle带序列的批量插入
    • 3. 条件批量插入
      • 3.1 MySQL条件批量插入
      • 3.2 Oracle条件批量插入

MySQL和Oracle批量插入SQL差异详解

1. 基本批量插入语法

1.1 MySQL批量插入

-- 方式1:使用VALUES
INSERT INTO table_name (column1, column2) 
VALUES 
(value1, value2),
(value3, value4),
(value5, value6);

-- 方式2:使用INSERT ... SELECT
INSERT INTO table_name (column1, column2)
SELECT value1, value2 UNION ALL
SELECT value3, value4 UNION ALL
SELECT value5, value6;

1.2 Oracle批量插入

-- 方式1:使用INSERT ALL
INSERT ALL
    INTO table_name (column1, column2) VALUES (value1, value2)
    INTO table_name (column1, column2) VALUES (value3, value4)
    INTO table_name (column1, column2) VALUES (value5, value6)
SELECT 1 FROM DUAL;

-- 方式2:使用UNION ALL
INSERT INTO table_name (column1, column2)
SELECT value1, value2 FROM DUAL UNION ALL
SELECT value3, value4 FROM DUAL UNION ALL
SELECT value5, value6 FROM DUAL;

2. 带序列的批量插入

2.1 MySQL带自增ID的批量插入

-- MySQL自增ID会自动处理
INSERT INTO table_name (column1, column2) 
VALUES 
(value1, value2),
(value3, value4);

2.2 Oracle带序列的批量插入

-- 方式1:使用INSERT ALL
INSERT ALL
    INTO table_name (id, column1, column2) 
    VALUES (seq_name.NEXTVAL, value1, value2)
    INTO table_name (id, column1, column2) 
    VALUES (seq_name.NEXTVAL, value3, value4)
SELECT 1 FROM DUAL;

-- 方式2:使用UNION ALL
INSERT INTO table_name (id, column1, column2)
SELECT seq_name.NEXTVAL, value1, value2 FROM DUAL UNION ALL
SELECT seq_name.NEXTVAL, value3, value4 FROM DUAL;

3. 条件批量插入

3.1 MySQL条件批量插入

-- 使用INSERT ... ON DUPLICATE KEY UPDATE
INSERT INTO table_name (id, column1, column2) 
VALUES 
(value1, value2),
(value3, value4)
ON DUPLICATE KEY UPDATE
column1 = VALUES(column1),
column2 = VALUES(column2);

3.2 Oracle条件批量插入

-- 使用MERGE INTO
MERGE INTO table_name t
USING (
    SELECT value1 as id, value2 as col1, value3 as col2 FROM DUAL UNION ALL
    SELECT value4, value5, value6 FROM DUAL
) s
ON (t.id = s.id)
WHEN MATCHED THEN
    UPDATE SET 
        t.column1 = s.col1,
        t.column2 = s.col2
WHEN NOT MATCHED THEN
    INSERT (id, column1, column2)
    VALUES (s.id, s.col1, s.col2);

相关文章:

  • 青少年编程与数学 02-014 高中数学知识点 06课题、数学建模与探究活动
  • 第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
  • Java面试黄金宝典28
  • 单例模式(懒汉模式/饿汉模式)
  • 服务器数据恢复—误格式化NTFS文件系统分区别慌,NTFS数据复活秘籍
  • linux ubuntu下查询包是否包含某个工具
  • 移远通信推出超小Wi-Fi+BLE模组FGM842D系列,赋能智能家居与工业物联网高效互联
  • 【Easylive】MyBatis 批量插入或更新语句解析insertOrUpdateBatch
  • 12.小节
  • 关于React Redux
  • 【3. 软件工程】3.0 软件工程概述
  • Android View事件分发机制深度解析
  • QuecPython 的 VScode 环境搭建和使用教程
  • IS-IS认证
  • MySQL日志管理
  • NVR接入录像回放平台EasyCVR视频融合平台城市/乡镇污水处理厂解决方案
  • 计算机等级考试数据库三级(笔记2)
  • 032-overlayYUV
  • 深入解析Kapt —— Kotlin Annotation Processing Tool 技术博客
  • 使用 Portainer 轻松管理 Docker 环境:完整安装与使用指南
  • 马上评丨学术不容“近亲繁殖”
  • 昆明一学校门外小吃摊占满人行道,城管:会在重点时段加强巡查处置
  • 央行设立服务消费与养老再贷款,额度5000亿元
  • 越怕出错越会出错,“墨菲定律”的魔咒该怎么破?
  • 国家税务总局泰安市税务局:山东泰山啤酒公司欠税超536万元
  • 北约年度报告渲染所谓“中国核威胁”,国防部回应