几种使用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
相关文章推荐
- ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
- SQL性能优化常见措施(Lock wait timeout exceeded)
- redis快速入门
- windows下安装redis
- Oracle数据库合并行记录,WMSYS.WM_CONCAT 函數的用法
- mysql新的一天重新累加计数(新的一天重新自增长)
- mysql服务器查询慢原因分析方法
- mysql服务器查询慢原因分析方法
- oracle-2中commit 详解
- MySQL(七) —— MySQL存储过程 & 存储引擎
- 十五oracle 触发器
- 十四 oracle 视图
- Oracle EBS 高级定价中定价属性的定义过程
- 十三oracle --控制结构(分支,循环,控制)
- Oracle多表查询
- MongoDB3.2中与DB数据库操作相关常用方法介绍
- debug下数据库连接的问题
- Oracle BPM开发中遇到的一些问题和解决方法
- C#反射,特性,数据库结合使用
- centos redis 安装