几种使用sql写法

Q表达式

Q表达式可以处理换行、单引号等特殊字符


update t_sys_res_config_sql t
   set t.query_sql = q'(long string)'

 where t.bm_class_id = 'T_RC_COM_INTERNATE_CONFIG';


UPDATE语句

UPDATE语句
可以对查询结果进行update。


要求:
(1)update只能更新from后面的第一张表
(2)连接条件:第一张表与后面表的主键连接。
(3)如果不是主键,需要添加提示bypass_ujvc




update (select /*+ bypass_ujvc*/
         p.cuid, p.related_path_cuid, l.cuid path_cuid
          from t_logic_port p, t_logic_link l
         where p.cuid = l.related_orig_port_cuid)
   set related_path_cuid = path_cuid;


技术原理
问题1:为什么可以对select语句执行update和delete操作?


解答:因为对select语句进行update或delete操作时,数据库在后台提供第一张表的rowid。数据库根据rowid可以进行DML操作。


问题2:为什么对select语句执行update和delete操作比一般的update和delete速度快?


解答:因为一般update是在执行时,首先对每行执行查询语句,查询出修改后的值,再去执行需要更新的值。
对select语句执行update时,先把执行结果先查出来,再根据rowid更新指定列的值,这样速度当然比每次更新都查询快。


WITH AS用法

当查询中多次用到某一部分时,可以用Oracle with语句创建一个公共临时表。因为子查询在内存临时表中,避免了重复解析,所以执行效率会提高不少。临时表在一次查询结束自动清除。


with   
alias_name1 as    (subquery1),  
alias_name2 as    (subQuery2),  
……  
alias_nameN as    (subQueryN)  
select col1,col2…… col3   
     from alias_name1,alias_name2……,alias_nameN 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值