精华内容
下载资源
问答
  • Oracle update语句

    万次阅读 2017-11-10 15:33:41
    update es_gc_prod_attr set ipt_id = 'attachEndDate' where product_attr_id = '2017101112121018113';


    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值


    update es_gc_prod set prod_open_type='1' where prod_code='1012';



    update es_gc_prod_attr set ipt_id = 'attachEndDate' where product_attr_id = '2017101112121018113'; 



    更新多个字段:


    UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
    WHERE LastName = 'Wilson'




    展开全文
  • Oracle UPDATE 语句

    万次阅读 2015-06-18 17:10:31
    我估计,只要是知道SQL 语句的人都会用UPDATE 语句,可是大部分人不知道UPDATE 语句有两种写法,首先,考虑下面的情况: CREATE TABLE STUDENT ( ID INT,---学号 NAME VARCHAR(20) NOT NULL,---姓名 BIRTHDAY DATE--...

    -- Start

    我估计,只要是知道SQL 语句的人都会用UPDATE 语句,可是大部分人不知道UPDATE 语句有两种写法,首先,考虑下面的情况:

    CREATE TABLE STUDENT
    (
      ID       NUMBER(10),           ---学号
      NAME     VARCHAR2(20) NOT NULL,---姓名
      BIRTHDAY DATE                  ---生日
    );
    
    INSERT INTO STUDENT (ID,NAME,BIRTHDAY) VALUES (1,'张三',DATE '1991-01-01');
    INSERT INTO STUDENT (ID,NAME,BIRTHDAY) VALUES (2,'李四',DATE '1991-01-01');
    INSERT INTO STUDENT (ID,NAME,BIRTHDAY) VALUES (3,'王五',DATE '1990-01-01');
    

    假设让你更新一下张三的生日,很简单,我们可以这么写:

    UPDATE STUDENT SET BIRTHDAY=DATE '1991-1-5' WHERE NAME='张三';

    除此之外,我们还可以这么写:

    UPDATE
    (
    SELECT * FROM STUDENT WHERE NAME='张三'
    )
    SET BIRTHDAY=DATE '1991-1-5';

    就上面这个例子而言,通常我们不会使用第二种写法,因为这种写法可读性不如第一种写法好,下面我们举一个用第一种方法办不到得例子,可是用第二种方法却非常简单(这是一个生产环境实际的例子,通常用在银行中,关于表定义,我做了简化),考虑如下情况:

    CREATE TABLE TRANSACTION
    (
    CUSTOMERID VARCHAR2(10),---顾客号
    SEQ NUMBER(9,0) NOT NULL,---流水号(每个顾客从1 开始)
    PROCESSDATE TIMESTAMP,---处理日
    AMOUNT NUMBER(10,2)---金额
    );

    对于上面表的流水号(SEQ)字段,每个顾客从 1开始,而且它的顺序,其实就是处理日(PROCESSDATE)排序后的顺序。细心的朋友可能已经发现,这样设计明显违反了表的第二范式,造成数据冗余。确实是这样的,为什么要这样设计呢?真实的原因我也不知道,只能问该系统的设计者。我猜测可能的原因是,系统的设计者将银行用的纸质报表直接转化为了数据库中的表,纸质报表有流水号(SEQ)字段是可以的,因为纸质报表我们无法排序,也不可能让会计去数每个顾客到底发生了多少交易,但是在数据库的表中,该字段则完全没有必要,因为我们可以通过对处理日(PROCESSDATE)排序后产生该结果。相反,如果设置流水号(SEQ)字段,就有可能因为这样那样的问题导致流水号(SEQ)和处理日(PROCESSDATE)排序结果不一致,这时候就要求我们更新流水号(SEQ),那么,我们该怎么更新呢?这个问题很好解决,通常我们会将查询结果排序后,更新其中的每一条记录。这样做是可以的,但是有点笨,我们能不能用一条语句来更新呢?答案是可以的,如下:

    UPDATE
    (
    SELECT
    TT.*,
    ROW_NUMBER() OVER() AS RN
    FROM
    TRANSACTION AS TT WHERE CUSTOMERID=...
    )
    SET SEQ=RN;

    怎么样,是不是很简单。如果你对上面语句的 ROW_NUMBER() OVER()还不熟悉,请参见:Oracle 分析函数

    此外,如果是多表联合更新,用第一种方法会写出非常恶心的 SQL,用第二种方法确非常直观,下面是一个简单的例子。

    -- 第一种写法
    UPDATE JOBS J 
    SET J.MIN_SALARY = (SELECT SALARY FROM EMPLOYEES E WHERE E.JOB_ID = J.JOB_ID)
    WHERE J.JOB_ID IN (SELECT JOB_ID FROM EMPLOYEES WHERE EMPLOYEE_ID = 100);
    
    --第二种写法
    UPDATE 
    (
      SELECT * FROM EMPLOYEES E, JOBS J WHERE E.JOB_ID = J.JOB_ID AND E.EMPLOYEE_ID = 100
    ) SET MIN_SALARY = SALARY;
    

    怎么样,第一种写法是不是很难看懂它在干什么(what the hell),第二种写法是不是简单明了。

    --更多参见:Oracle SQL 精萃

    -- 声明:转载请注明出处

    -- Last edited on 2015-08-11

    -- Created by ShangBo on 2015-06-18

    -- End


    展开全文
  • oracle update语句

    千次阅读 多人点赞 2015-01-04 09:37:06
    Oracle在表中更新数据的语法是: 语法结构:UPDATE操作 UPDATE 表名 SET 列名1=值,列名2=值…… WHERE 条件 代码演示:UPDATE操作 SQL> UPDATE INFOS SET CLASSNO='1002',STUADDRESS='山东莱芜' WHERE ...

    Oracle在表中更新数据的语法是:

    语法结构:UPDATE操作

    UPDATE 表名 SET 列名1=值,列名2=值…… WHERE 条件
    

    代码演示:UPDATE操作

    SQL> UPDATE INFOS SET CLASSNO='1002',STUADDRESS='山东莱芜' 
    WHERE STUNAME='阮小二'; 

     

    展开全文
  • oracle update语句commit

    千次阅读 2018-09-26 17:02:35
    今天在操作oracle时,做了如下操作; 1.在SQL Window中执行语句update emp set sal='10000' where ename='SMITH',更新成功后,执行查询emp表语句...步骤1中执行完update语句,没有点击commit图标进行提交。 其实这...

    今天在操作oracle时,做了如下操作;

    1.在SQL Window中执行语句update emp set sal='10000' where ename='SMITH',更新成功后,执行查询emp表语句,发现更新成功

    2.在Command window中再次执行查询emp表语句,发现结果与步骤1中不一致

    问题在于;步骤1中执行完update语句,没有点击commit图标进行提交。

    其实这是已经知道的知识点,但是会常常忽视掉哭,所以今天写下来加深印象大笑

    当然,insert、delete也是同update一样,需要commit才能提交,在提交前可以rollback进行回滚

     

    展开全文
  • ORACLE UPDATE 语句语法

    千次阅读 2008-03-06 16:49:00
    ORACLE UPDATE 语句语法 为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, --客户资料表 create table customers ( customer_id number(8) not null, -- 客户标示 city...
  • oracle update 语句无效

    千次阅读 2012-05-02 11:24:00
    我写了个update语句  update ao_msg_suc t set t.suc_cnt = suc_cnt, t.fail_cnt = fail_cnt + null_cnt, t.suc_percent = suc_percent, t.mes_fl
  • Oracle update语句 格式

    2013-03-16 14:37:39
    修改的字段以逗号隔开。 update 表 set 字段1 = 值,字段2 = 值 where 字段3 = 值
  • ORACLE UPDATE 语句语法与性能分析的一点看法为了方便起见,建立了以下简单模型,和构造了部分测试数据:在某个业务受理子系统BSS中,--客户资料表create table customers(customer_id number(8) not null, -- 客户标示...
  • 今天去帮人优化存储过程,其中有个过程里面有个update语句执行要很久很久。其中加粗where条件没看明白(开发的人也不在了),这个条件去查询半天出不来结果。将in改成exists后也没效果。 其中:BPTTMBA 一百多万...
  • task 任务表 role 角色表 两表之间必须有关联的字段 ...update task t set t.roleName = ( select r.name from role r where r.id=t.roleid ) 转载于:https://www.cnblogs.com/javaLin/p/9492333.html...
  • 1.下面的语句用来查询哪些对象被锁: select object_name,machine,s.sid,s.serial# from v$locked_object l,dba_objects o ,v$session s where l.object_id = o.object_id and l.session_id=s.sid; 2....
  • oracle 更新update语句

    万次阅读 2017-10-10 10:21:21
    update 表名 set 列名=新值 where条件; select语句 for update;
  • oracle update更新语句

    万次阅读 2018-07-25 19:11:24
    注意:oracleupdate多列用逗号分隔。   1.update IOP_T_USERINFO t set (t.birthday, t.department)=(select '5202','南京' from dual ) where t.userid='321'; 2.update IOP_T_USERINFO t set t.birthday='...
  • oracle动态update语句

    千次阅读 2018-05-23 19:33:57
    2、OK,debugger一下,发现提交的时候后台打印出错,提示大概就是这样 SQLException '17004' 其实很简单,这种错误一般都是说某一列传进来的值为null,因此报错,所以追踪下去,发现是update语句没有做动态传值处理...
  • oracleupdate语句优化

    千次阅读 2014-09-12 12:04:01
    Oracleupdate语句优化研究 一、 update语句的语法与原理 1. 语法 单表:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 如:update t_join_situation set join_state='1'...
  • 执行UPDATE语句的步骤: 如果数据和回滚数据不在数据库高速缓冲区中,则Oracle服务器进程将把它们从数据文件中读到数据库高速缓冲区中。 Oracle服务器进程在要修改的数据行上加锁(行一级的锁,而且是在内存的数据...
  • 1.开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果。但是奇怪的是执行其他的select语句却是可以执行的。 2.在plsql中执行以下...
  • Oracleupdate语句优化研究

    千次阅读 2012-06-20 15:21:13
    Oracleupdate语句优化研究 一、  update语句的语法与原理 1.  语法 单表:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 如:update t_join_situation set join_state='1'whereyear='2011' ...
  • oracleupdate语句更新字段

    千次阅读 2019-09-27 09:02:58
    如需要修改下列数据:...update student set sname = '李四', sage = 20, sbirthday = to_date('2010-01-01', 'yyyy-mm-dd'), saddress = '广州市越秀区' where sid = 1; 如果字段非常多,这样写就稍微麻烦...
  • Oracleupdate语句优化研究 批量更新

    万次阅读 2018-12-05 10:55:40
    在实际项目中,往往存在业务逻辑处理时,先更新,然后查询的情况,而更新则是在子查询的基础上执行,如果用传统语法更新,效率特别慢,难以满足用户使用...1、update语句的语法与原理 语法 单表:UPDATE 表名称 S...
  • 问题 开发的时候debug到一条update的sql语句时程序就不动了,然后我...这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commi...
  • 笔者在开发一个管理系统时遇到一个问题:在debug调试的时候,执行一条update语句是卡住不动了,也没有异常抛出,其他的操作都可以。用plsql执行程序中的update语句也是卡住。 原因 这种只有update无法执行其他语句...
  • Oracle的forUpdate语句

    千次阅读 2019-08-27 15:04:40
    Select...for update 语句是我们经常使用手工加锁语句。通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所妨碍。 借助...
  • Oracle执行update语句卡住不动

    千次阅读 2018-03-31 12:28:32
    一.问题探究 开发的时候debug到一条update的sql语句时程序就不动了,然后我就...这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如...
  • oracleupdate语句使用case when

    千次阅读 2020-09-17 19:05:32
    更新OPERATE_TYPE字段时,如果数据的OPERATE_TYPE为D则不更新OPERATE_...update T_HOUSEINFO_REQ set OPERATE_USERNAME='系统',OPERATE_TYPE=(case OPERATE_TYPE when 'D' then 'D' else 'U' end) where id= 1 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 154,245
精华内容 61,698
关键字:

oracle的update语句