`
Eric.Yan
  • 浏览: 323251 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle中你不常用的update语句

阅读更多

题记:oracle中并没有update  from的语句。

 

这里重点介绍基于另外的表更新当前表的操作。

比如你有一张user表,是参考user_ref得来的,换句话说,你user表的用户都来自user_ref,但是中途出现一些问题,user表中的有些user的first_name, last_name不对,现在要求用user_ref的相对应的name来更新user表:

首先,对user表做个copy,确定数据没错后再对真正的user表操作

 

create table myuser as select * from rp_user;

 

方案一:

 

我们可以这么写

 

update myuser
set(first_name, last_name) =
(
  select rpref.first_name first_name, rpref.last_name last_name
  from rp_ref_employee rpref
  where rpref.soe_id(+) = myuser.sso_id
  and rpref.soe_id is not null
)
where exists
(
  select 1 from rp_ref_employee rpref where rpref.soe_id(+) = myuser.sso_id and rpref.soe_id is not null
);

 

请你尤其注意这里的where子句,如果你不写,oracle将默认更新所有的值,如果某些值在子查询中找不到,将会使得myuser中出现很多空值;

 

方案二:

 

update
(
  select myuser.first_name myfn, rpref.first_name rpfn, myuser.last_name myln, rpref.last_name rpln
  from myuser, rp_ref_employee rpref
  where rpref.soe_id(+) = myuser.sso_id
  and rpref.soe_id is not null
)
set myfn = rpfn, myln = rpln;

 

这里的表是一个类视图,你执行的时候可能会遇到这样的错误,‘无法修改与非键值保存表对应的列’,这是因为新建表还没有主键 的缘故,新建主键;

 

 

summary:

 

在oracle中不存在update from结构,如果遇到需要从另外一个表来更新本表值的时候,有2种方案,一种是使用子查询,此时一定要注意where 条件(一般后面接exists),除非两个表是一一对应的,否则where条件不可少;

还有就是类视图的更新方法,这也是oracle所独有的!

 

reference: http://wenku.baidu.com/view/7db8c0d4b14e852458fb576e.html

 

                 http://wenku.baidu.com/view/4f497c5277232f60ddcca121.html

分享到:
评论

相关推荐

    ORACLE多表关联的update语句

    在Oracle数据库中,多表关联的UPDATE语句用于更新一个表中的数据,这些数据依赖于另一个或多个表的记录。这种操作在数据整合、错误修正或者数据同步时非常常见。以下我们将详细探讨如何使用不同方式执行多表关联的...

    update语句的优化-oracle .pdf

    在本篇文档中,作者详细总结了在实际项目中针对Oracle数据库的update语句优化的四种方案。以下是对这四种方案的知识点进行详细的阐述: 1. 标准update语法优化: 当面对单表更新或较简单的SQL语句时,可以直接使用...

    oracle 多表做update insert语句.docx

    今天,我们将讨论 Oracle 中的 Update 语句,包括 Update 语句的基本语法、Update 语句中使用 Select 语句、Update 语句中使用 Join 语句、Insert 语句的使用等。 一、Update 语句的基本语法 Update 语句的基本...

    oracle执行update语句时卡住问题分析及解决办法

    这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住。由于我的java程序...

    oracle常用SQL语句(汇总版).docx

    DELETE 语句不能释放 Oracle 中被占用的数据块表空间,只能标记被删除的数据块为 unused。如果需要删除一个大表中的全部记录,可以使用 TRUNCATE 命令,它可以释放占用的数据块表空间。 3. UPDATE 语句 UPDATE ...

    ORACLE_多表关联_UPDATE_语句

    Oracle数据库中的多表关联UPDATE语句是用于在一个表中更新数据时,依据另一个表的条件进行操作的关键技术。这在处理复杂的数据同步或修正场景时非常有用。在本例中,我们将探讨如何利用多表关联来更新数据,并通过...

    ORACLE常用SQL语句大全.pdf

    本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 * 创建数据库:CREATE ...

    ORACLE_UPDATE_语句语法与性能分析

    在Oracle数据库中,UPDATE语句是用于修改已存在数据的基本操作之一。在上述示例中,我们看到三种不同的UPDATE语句形式,它们各自处理特定的情况并具有不同的性能特点。 1) **最简单的形式**: 这种情况下,我们更新...

    update语句的优化-oracle

    在Oracle数据库管理中,UPDATE语句是用于修改现有数据表中的记录。然而,不恰当的UPDATE操作可能会导致性能问题,特别是在处理大量数据时。本文将深入探讨如何优化Oracle数据库中的UPDATE语句,以提高数据库效率。 ...

    根据update语句自动生成select语句

    在数据库管理中,UPDATE语句用于修改已存在的数据记录,而SELECT语句则用于查询数据。在某些场景下,我们可能需要从UPDATE语句转换为SELECT语句,以验证更新操作将影响哪些行或者理解更新逻辑。这在调试、数据分析或...

    Oracle常用的SQL语句维护

    本文将深入探讨Oracle中常用的SQL语句以及与数据库表空间相关的维护知识。 首先,让我们了解如何在Oracle中创建表空间。表空间是Oracle数据库中存储数据的逻辑单位,它由一个或多个数据文件组成。创建表空间的SQL...

    生成UPDATE语句

    4. **主键在UPDATE语句中的作用** ### Oracle UPDATE 语句的生成逻辑 在Oracle数据库中,`UPDATE`语句用于修改现有行的数据。一个基本的`UPDATE`语句包含两个主要部分:`SET`子句用于指定要修改的列及新值,`WHERE...

    ORACLE UPDATE 语句语法与性能分析看法

    本文将深入探讨Oracle中`UPDATE`语句的几种常见用法,以及在不同场景下如何进行性能分析和优化。 #### 简单的`UPDATE`语句 在最基本的层面上,`UPDATE`语句用于修改表中的特定行。例如,在上述例子中,由于客户所在...

    update语句

    标题中的“update语句”指的是在数据库管理中用于修改现有数据的SQL命令。在数据库操作中,`UPDATE`语句是不可或缺的一部分,它允许我们更改表中的特定行或所有行的数据。下面将详细介绍`UPDATE`语句的工作原理、...

    oracle常用sql语句大全 注释完整 放心使用

    本资料集包含了Oracle数据库中常用SQL语句的大全,注释完整,非常适合初学者和有经验的开发者参考使用。 1. **数据查询(SELECT语句)**: - `SELECT * FROM table_name;`:查询表table_name中的所有列。 - `...

    oracle的update的五种方式

    标准 Update 语句是 Oracle 中最基本的更新语句,语法为:`UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值`。例如:`UPDATE t_join_situation SET join_state='1' WHERE year='2011'`。这种方式适用于更新...

    Oracle数据库维护常用SQL语句集合

    3. **数据更新(UPDATE语句)**:UPDATE语句用于修改现有数据。例如,`UPDATE table_name SET column1 = new_value WHERE condition`将满足条件的记录的指定列更新为新值。 4. **数据删除(DELETE语句)**:如果你...

    oracle利用批处理文件执行SQL语句,bat连接oracle数据库并执行语句

    在这个场景中,我们可以利用批处理文件来简化Oracle数据库的操作,如删除用户、创建用户、创建表和触发器,以及执行其他SQL语句。 首先,我们需要了解如何在批处理文件中连接Oracle数据库。这通常通过Oracle的...

    数据库oracle for update of和for update的区别

    在Oracle数据库中,为了确保数据的一致性和准确性,尤其是在多用户环境中进行并发操作时,锁机制是必不可少的一部分。本文将详细介绍`FOR UPDATE`与`FOR UPDATE OF`之间的区别,并通过具体的示例来帮助理解这两种锁...

    Oracle常用sql语句整理.zip

    以下是一些Oracle数据库中常用的SQL语句及其详细解释。 1. **数据查询(SELECT)** - `SELECT column1, column2 FROM table_name;` 用于从表中选择特定列的数据。 - `WHERE condition;` 添加条件过滤结果,如 `...

Global site tag (gtag.js) - Google Analytics