您的位置:首页 > 数据库

几种使用sql写法

2016-04-25 15:55 204 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: