Oracle中带条件插入数据的使用方法示例详解

 更新时间:2023年12月14日 09:44:14   作者:北漂燕郊杨哥  
在Oracle数据库中,INSERT WHEN语句用于在满足特定条件时插入数据,它允许您根据条件控制插入操作是否执行,本文给大家分享Oracle中带条件插入数据的使用方法,感兴趣的朋友一起看看吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

Oracle中带条件插入数据的使用方法

在Oracle数据库中,INSERT WHEN语句用于在满足特定条件时插入数据。它允许您根据条件控制插入操作是否执行。

以下是INSERT WHEN语句的一般语法:

INSERT INTO table_name (column1, column2, column3, ...)
WHEN condition
   THEN VALUES (value1, value2, value3, ...);

其中:

  • table_name是要插入数据的表名。
  • column1, column2, column3, ...是要插入数据的列名。
  • condition是当满足该条件时执行插入操作的逻辑条件。
  • value1, value2, value3, ...是要插入的实际值。

下面是一个示例,演示如何使用INSERT WHEN语句:

INSERT INTO employees (employee_id, first_name, last_name)
WHEN EXISTS (SELECT 1 FROM employees WHERE employee_id = 100)
   THEN VALUES (100, 'John', 'Doe');

在上面的示例中,当存在具有employee_id为100的记录时,将向employees表中插入一条新记录,其中employee_id为100,first_name为’John’,last_name为’Doe’。

请注意,INSERT WHEN语句的语法可能因Oracle数据库的版本而有所不同。在使用之前,请确保查阅适用于您数据库版本的官方文档以获取准确的语法和用法说明。

Oracle 插入数据

Oracle 插入数据

顾名思义,INSERT用于向数据库插入(添加行)。

可以以多种方式使用插入操作:

  • 插入单个完整的行;
  • 插入单个部分行;
  • 插入多行;
  • 插入查询的结果。

提示:insert 和系统安全性

可以使用Oracle安全性基于每个表或每个用户禁用INSERT语句。

1.1 插入完整的行

语法示例:

INSERT INTO Customers
VALUES(10006,
       'Pep E. LaPew',
       '100 Main Street',
       'Los Angeles',
       'CA',
       '90046',
       'USA',
       NULL,
       NULL);

注意:无输出

INSERT语句通常不会产生任何输出,但是如果在Oracle SQL Developer中执行上面的语句,应该会看到“1 row inserted.”消息。

在VALUES子句中指定要在每个表列中存储的数据,并且必须为每一列提供一个值。如果列没有值,就应该使用NULL值(假定表允许为该列不指定值)。必须按表定义中的顺序填充列。编写依赖于特定顺序的SQL语句是非常不安全的。

更安全(不幸的是也是更麻烦)的方式是编写如下所示的INSERT语句:

INSERT INTO customers(cust_id,
                      cust_name,
                      cust_address,
                      cust_city,
                      cust_state,
                      cust_zip,
                      cust_country
)
VALUES(10006,
       'Pep E. LaPew',
       '100 Main Street',
       'Los Angeles',
       'CA',
       '90046',
       'USA'
);

提示:自动主键

每次添加行时,无需手动分配唯一的值(也无需记录上次使用的是什么值),大多数DBMS都提供了一种自动分配的方式:每次向表中添加行时,都会自动分配下一个可用的数字,这种功能称为 自动递增

由于提供了列名,VALUES必须以指定的顺序来匹配指定的列名,这个顺序不一定是列出现在实际表中的顺序。

提示:总是使用列所在的列表

通常,如果没有显式指定所在列的列表,那么就永远也不要使用INSERT。

警告:省略列

如果表定义允许,可以从INSERT操作中省略列。此时,必须存在以下条件:

将列定义为允许NULL值在表定义中指定默认值。这意味者如果没有指定值,则将使用默认值。

提示:插入多个行

与大多数其他的DBMS不同,Oracle不支持可以同时插入多个行的insert版本。

解决方法:

--这种语法为一种错误示范,但是在其他的DBMS中是可以使用的
insert into table_name(colum1, colun2)
values(1,2),(3,4);
--正确用法:
1、采用union all拼接查询方式:
insert into CB_PRACTICE(id_, type_,remark)
select 5,'物理','浮力' from dual
union all select 6,'物理','阻力' from dual;
2、采用insert all的方式:
INSERT ALL
INTO CB_PRACTICE(id_, type_,remark) VALUES (7,'语文','唐诗')
INTO CB_PRACTICE(id_, type_,remark) VALUES (8,'语文','宋词')
SELECT * FROM DUAL;

2. 插入检索的数据

INSERT还有另外一种形式,可用于把INSERT语句的结果插入表中.这称为INSERT SELECT.

INSERT INTO customers(cust_id,
                      cust_contact,
                      cust_email,
                      cust_name,
                      cust_address,
                      cust_city,
                      cust_state,
                      cust_zip,
                      cust_country)
SELECT cust_id,
       cust_contact,
       cust_email,
       cust_name,
       cust_address,
       cust_city,
       cust_state,
       cust_zip,
       cust_country
FROM custnew;

提示:INSERT SELECT中的列名

为了简单起见,这个示例在INSERT和SELECT语句中使用相同的列名,但是不需要列名匹配.

到此这篇关于Oracle中带条件插入数据的使用方法的文章就介绍到这了,更多相关Oracle插入数据内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • oracle中UPDATE nowait 的使用方法介绍

    oracle中UPDATE nowait 的使用方法介绍

    UPDATE nowait 应用以下场景:查询某条数据,并对其开启数据库事务,感兴趣的朋友可以看看应用语句,希望可以帮助到你
    2013-04-04
  • Oracle中declare的使用及说明

    Oracle中declare的使用及说明

    这篇文章主要介绍了Oracle中declare的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 解决Oracle模拟事务提交、表锁,处理表锁问题

    解决Oracle模拟事务提交、表锁,处理表锁问题

    这篇文章主要介绍了Oracle模拟事务提交、表锁,处理表锁问题,通过可视化工具navicat执行插入语句,发现虽然我们设置了不自动提交,这里还是插入成功了,这里给大家介绍下手动提交事务流程,需要的朋友可以参考下
    2022-09-09
  • ORACLE学习笔记-查询篇

    ORACLE学习笔记-查询篇

    前后发了好几篇ORACLE的基础知识了,主要还是自己做学习笔记的,加深印象,今天来看下ORACLE的查询语句
    2014-08-08
  • Oracle Sqlplus命令登录多种方式案例讲解

    Oracle Sqlplus命令登录多种方式案例讲解

    这篇文章主要介绍了Oracle Sqlplus命令登录多种方式案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • ORACLE 10g 安装教程[图文]

    ORACLE 10g 安装教程[图文]

    刚刚接触ORACLE的人来说,从那里学,如何学,有那些工具可以使用,应该执行什么操作,一定回感到无助。所以在学习使用ORACLE之前,首先来安装一下ORACLE 10g,在来掌握其基本工具。俗话说的好:工欲善其事,必先利其器。我们开始吧!
    2009-05-05
  • oracle ORA-00988 missing or invalid password 错误

    oracle ORA-00988 missing or invalid password 错误

    在设置数据库实例的密码时,注意不要以数字开头,否则您将会遇到 ORA-00988 missing or invalid password (口令缺失或无效) 错误
    2015-01-01
  • Oracle数据库安全策略分析(一)

    Oracle数据库安全策略分析(一)

    Oracle数据库安全策略分析(一)...
    2007-03-03
  • Oracle 系统变量函数介绍

    Oracle 系统变量函数介绍

    在Oracle数据库中,Oracle系统变量函数是经常会使用到的函数,下面就为您详细介绍Oracle系统变量函数,供您参考学习
    2014-08-08
  • ORACLE查询表最近更改数据的方法

    ORACLE查询表最近更改数据的方法

    修改项目时,涉及到了Oracle中许多表的修改(包括:增加、删除字段,修改注释等)。由于开始没有进行记录,造成在上测试机时,忘记了具体修改过哪些表了
    2012-11-11

最新评论

?


http://www.vxiaotou.com