`

Oracle 几种更新(Update语句)查询的方法

 
阅读更多

数据库更新就一种方法Update,
其标准格式:Update 表名 set 字段=值 where 条件
不过根据数据的来源不同,还是有所区别的:

 
1.从外部输入
这种比较简单
例:update tb set UserName="XXXXX" where UserID="aasdd"

2.一些内部变量,函数等,比如时间等
直接将函数赋值给字段
update tb set LastDate=date() where UserID="aasdd"

3.对某些字段变量+1,常见的如:点击率、下载次数等
这种直接将字段+1然后赋值给自身
update tb set clickcount=clickcount+1 where ID=xxx

4.将同一记录的一个字段赋值给另一个字段
update tb set Lastdate= regdate where XXX

5.将一个表中的一批记录更新到另外一个表中
table1 
ID f1 f2
table2 
ID f1 f2
先要将table2中的f1 f2 更新到table1(相同的ID)

update table1,table2 set table1.f1=table2.f1,table1.f2=table2.f2 where table1.ID=table2.ID

6.将同一个表中的一些记录更新到另外一些记录中
表:a
ID   month   E_ID     Price
1       1           1        2
2       1           2        4
3       2           1         5
4       2           2        5
先要将表中2月份的产品price更新到1月份中
显然,要找到2月份中和1月份中ID相同的E_ID并更新price到1月份中
这个完全可以和上面的方法来处理,不过由于同一表,为了区分两个月份的,应该将表重命名一下
update a,a as b set a.price=b.price where a.E_ID=b.E_ID and a.month=1 and b.month=2 

当然,这里也可以先将2月份的查询出来,在用5.的方法去更新 

update a,(select * from a where month=2)as b set a.price=b.price where a.E_ID=b.E_ID and a.month=1

 

 

 

 

 

 

多表关联UPDATE

假设有两个表A和B,A表字段a,b,c,d,B表字段b,e,f,两表的关联条件是字段b,现在想做个data patch,欲将B表中的字段e的值patch给A表的字段c.

有如下两种方法:

update A set A.c=(select e from B where B.b=A.b)
where exists(select 1 from B where B.b=A.b);

 

merge into A
using B
on (A.b=B.b)
when matched then update set A.c=B.e;

 上面两种方法都可以实现多表联结的更新,其中的B表也可以是子查询,视图。

merge into是oracle 9i之后添加的语法,可以实现update/insert的功能(满足条件更新,不满足条件插入),而且效率要高,因为用merge只需要一次全表扫描,但merge into的使用需要小心,必须理解它的用法才能放心使用,否则有可能出现问题。

 

上面的例子不仅仅可以更新单个字段,也可以更新多个字段,如下:

update A set A.c=(select e from B where B.b=A.b),
             A.d=(select f from B where B.b=A.b)
where exists(select 1 from B where B.b=A.b);



merge into A
using B
on (A.b=B.b)
when matched then update set A.c=B.e,
                             A.d=B.f;

 

 

 

 

分享到:
评论

相关推荐

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

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

    update 语句优化update 语句优化update 语句优化

    ### Update语句优化 在数据库操作中,`UPDATE`语句是用于修改现有记录的关键工具之一。对于大型数据库系统来说,优化`UPDATE`语句能够显著提升数据处理速度和效率,减少资源消耗,提高整体性能。本文将通过分析提供...

    Oracle中SQL语句执行效率的查找与解决

    本文将深入探讨Oracle中SQL语句执行效率的查找与解决方法,特别关注于如何识别和优化那些导致性能瓶颈的查询。 ### Oracle SQL执行效率:查找与解决 #### 一、资源消耗分析 在Oracle中,SQL语句执行效率低下通常...

    ORACLE__SQL语句教学(附有sql最常用经典语句)

    2. **数据插入与更新**:INSERT语句用于向表中添加新记录,UPDATE语句则用于修改现有记录。掌握这些语句的正确用法对于保持数据库的准确性和一致性至关重要。 3. **数据删除**:DELETE语句用于从表中移除数据,但需...

    oracle PLSQL结构控制语句

    根据具体情况,分支结构可以有以下几种形式: 1. IF-THEN-END IF 形式 这是最简单的 IF 结构。例如,在 emp 表中,输入雇员编号,如果其工作是业务员(CLERK),工资提高 10%(其他员工工资不变)。 ```sql SET ...

    oracle数据库各种功能语句以及驱动

    10. 复制和备份:Oracle提供了几种复制和备份策略,如逻辑复制(通过触发器和物质化视图)、物理备份(如RMAN)以及数据泵(Data Pump)导出导入。 以上只是Oracle数据库功能的一小部分,实际上,Oracle还包含了...

    mybatis执行批量更新batch update 的方法(oracle,mysql两种)

    在MyBatis中,批量更新(batch update)是一种提高数据库操作效率的重要手段,尤其是在处理大量数据更新时。这里我们将详细探讨如何在Oracle和MySQL数据库中使用MyBatis进行批量更新。 1. **Oracle数据库的批量更新...

    oracle常用经典sql查询.rar

    了解SQL的基本语法是掌握Oracle SQL查询的前提,包括SELECT语句用于查询数据,INSERT语句用于插入新记录,UPDATE语句用于修改已有记录,而DELETE语句则用于删除数据。 在Oracle SQL查询中,有几种常见的高级查询...

    oracle初级学习操作语句

    DML语言主要用于对数据库中的数据进行修改操作,主要包括以下几种语句: ##### 1. 插入数据(INSERT) INSERT语句用于向表中添加新行。可以指定具体的列名及其对应的值,也可以通过子查询的方式从现有数据中构建新...

    Oracle数据控制语句详解

    DML 语句主要用于数据的增、删、改操作,包括以下几种: - INSERT:向表中添加新的行。插入时可以选择指定列,如果不指定,系统会默认插入所有列。如果某个字段为 NULL,则使用 NULL 关键字表示。例如: ```sql ...

    浅谈Oracle数据库基于索引的SQL语句优化方法.pdf

    此外,索引虽然能够加速查询操作,但也会增加写操作的成本,例如INSERT、UPDATE、DELETE等操作,在创建索引之后会变得更慢,因为索引也需要随之更新。 在进行索引优化时,还要注意以下几点: - 对于数据更新频繁的...

    oracle语句实例教程

    2. **SQL与SQL*Plus、PL/SQL的关系**:SQL*Plus是Oracle提供的一个交互式命令行工具,可以直接执行SQL和PL/SQL语句,进行数据操作、查询、脚本执行和数据库管理。它提供了一种方便的方式来与Oracle数据库交互。 3. ...

    浅谈Visual Basic访问Oracle数据的几种方法.pdf

    以下是几种常见的访问Oracle数据库的方法: 1. **数据访问对象 (DAO)** DAO(Data Access Objects)是微软提供的一种早期的数据访问接口,主要用于访问Access数据库。尽管它最初设计用于Access,但通过ODBC(Open...

    Oracle数据库分区表操作方法

    Oracle数据库提供对表或索引的分区方法有三种: ·范围分区(Range Partitioning) ·Hash 分区(Hash Partitioning) ·复合分区(Composite Partitioning) 范围分区 范围分区就是对数据表中的某个值的范围...

    基于Oracle数据库的几种常见SQL优化策略.pdf

    本文档主要讨论了基于Oracle数据库的几种常见SQL优化策略,以提高数据库的处理性能和查询效率。在当前大数据和物联网发展的背景下,数据库的性能优化变得越来越重要。Oracle数据库作为当前使用最为广泛的数据库管理...

    Oracle中只更新两张表对应数据的方法 - AJava

    如果不想使用JOIN,也可以在UPDATE语句中使用子查询来找到关联的数据。例如: ```sql UPDATE Employees e SET e.DepartmentName = ( SELECT d.DepartmentName FROM Departments d WHERE e.DepartmentID = d....

    Oracle语句

    在Oracle中,SQL语句可以分为以下几类: - SELECT:用于从表中检索数据,支持多表连接、子查询、聚合函数等复杂查询。 - INSERT:用于向表中插入新记录。 - UPDATE:用于修改已存在的记录。 - DELETE:用于从表...

    Mybatis和orcale update语句中接收参数为对象的实例代码

    当我们在MyBatis中与Oracle数据库进行交互,特别是执行UPDATE语句时,有时需要根据对象的属性来动态地更新数据库记录。以下是一个具体的实例,展示了如何在MyBatis的`mapper.xml`中编写这样的UPDATE语句。 首先,...

    oracle常用的sql语句

    ### Oracle常用的SQL语句知识点详解 #### 一、SQL概述 SQL(Structured Query Language),即结构化查询语言,是用于管理关系型数据库的标准语言。Oracle作为一款流行的关系型数据库管理系统,其支持的SQL语句与...

Global site tag (gtag.js) - Google Analytics