深入解析partition-range分区
先借用官网对range分区的用法说明Range partitioning maps data to partitions based on ranges of partition key values that you establish for each partition. It is the most common type of partitioning and is often used with dates. For example, you might want to partition sales data into mont...
游标数据不同方式读取、提交性能对比分析
在itpub论坛中看到有人归纳整理游标数据几种提取方式及提交方式的性能分析,收集的很全面,于是在本机也测试了一把,附上我的测试代码及测试数据。先看游标数据读取提交的五种方式,如下:1. 使用游标 逐条提取、逐条处理、逐条插入、逐条提交。2. 使用游标 逐条提取、逐条处理、逐条插入、利用自定义计数变...
inner join using二表关联查询,相同列只显示一列
官方inner joins及using用法解释如下:例:表table1有id,name字段,表table2有id,age字段,通过id字段关联table1和table2,查询所有人员的性名和年龄若是select * from table1,table2 where table1.id=table2.id,则因id在二表中都存在,会重复显示,若想二表连查且相同列只显示一列,则用下面的方式...
巧用trunc函数,获取某日期范围内的数据
先看trunc函数日期的用法:select trunc(sysdate) from dual; --2014/3/5 今天的日期为2011-3-18select trunc(sysdate, 'mm') from dual; --2014/3/1 返回当月第一天.select trunc(sysdate, 'yy') from dual; --2014/1/1 返回当年第一天select trunc(sysdate, 'dd') from dual; --2014/3/5 返回当前年月...
“no_merge”hints优化视图访问低效问题
今天在itpub论坛看到一则贴子,楼主反应以下sql执行缓慢:create table test_20140230 asselect to_number(201401) deal_date, e.src_terminal_id, e.cont_type from (select * from test1 a where a.forward_time >= 201401...
依据前后数据关联关系,生成多行数据
例:一张表的数据如下,第一个字段是日期,第二个字段是数字 ROW DATE NUMBER1 2014-02-01 42 2014-02-08 33 2014-02-15 44 2014-02-22 9现在需要写一个查询,显示出的结果是7号以前的的值是4,8号到14号的值是3,15号到21号的值是4,21号到当前日期的值是9。方法1:分析:要生成的数...
DBMS_METADATA.GET_DDL获取用户ddl脚本
oracle在9i以后,可以利用dbms_metadata.get_ddl包得到数据库对象的ddl脚本。1、获取test用户下单个建表、视图或索引的语法:select dbms_metadata.get_ddl('TABLE','TAB_NAME','TEST') from dual; select dbms_metadata.get_ddl('VIEW','VIEW_NAME','TEST') from dual;&nbs...
SQLPLUS查看oracle sql执行计划命令
SQL>set autotrace on --显示执行计划和统计信息 SQL>set autotrace on explain --只显示执行计划 SQL>set autotrace on statistics --只显示统计信息 SQL>set autotrace traceonly --同autotrace on,但不显示查询结果 SQL>set autotrace off --关闭au...
update语句的优化方式
有二张表,表中数据如下所示:SQL> select * from a; ID COL1 COL2 ...
根据不同字段,升降序排列查询结果
如下例:根据col1降序、col2升序。with tt as(select 'a1' col1, 1 col2 from dual union all select 'a1' col1, 2 col2 from dual union all select 'a2' col1, 0 col2 from dual union all sel...
sqlplus中&&和&的区别
当一个变量赋值后希望反复使用,那么就可以用&&,通常来说第一个定义时用&&+变量名,后面直接用&+变量名即可。如下测试代码:点击(此处)折叠或打开SQL> select * from t;FPHM KSHM---- --------2014 000000012014 00000...
分组查询连接号段
实际应用中,经常会碰到连续号码断号的问题,如何根据已有号码,分段显示出来?原理简单,首先根据“号码”排序,然后再根据“号码-排序号”分组,再根据分组结果求组内的最大和最小值,就能产生分组号段了。例:有张表,数据如下:fphm,kshm2014,000000012014,000000022014,000000032014,000000042014,0000000520...
group by分组函数之rollup与cube用法
ROLLUP,是GROUP BY子句的一种扩展,可以为每个分组返回小计记录以及为所有分组返回总计记录。CUBE,也是GROUP BY子句的一种扩展,可以返回每一个列组合的小计记录,同时在末尾加上总计记录。先看下面的例子:初始化表及数据代码如下:...
nvl、nvl2与nullif函数用法区别
NVL (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型。NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1。如下例示:...
connect by 用法汇总
connect by可实现多种功能,如下:1、列出上下级关系;2、构造序列;3、实现排列组合;先看connect by 官方语法,下图示:下面举例分析connect by 实现各种功能用法。一、列出上下级关系附上测试脚本如下:点击(此处)折叠或打开SQL> drop table emp;表已删...
分析函数用法及窗口子句 range/rows差别
分析函数的语法结构一般是:分析函数名(参数) OVER (PARTITION BY子句 ORDER BY子句 ROWS/RANGE子句)。即由以下三部分组成:分析函数名:如sum、max、min、count、avg等聚集函数以及lead、lag行比较函数等;over: 关键字,表示前面的函数是分析函数,不是普通的集合函数;分析子句:ove...
outer join新旧语法分析
从Oracle9i开始,对于外连接(Outer join)Oracle支持SQL92标准:这个标准有很多新的连接语法。外连接的新语法有left outer join和rigth outer join以及full outer join,旧语法外连接使用+号,另外,旧语法无法实现full outer join,只能用union all来代替。Oracle也强烈建议9i以及之后的版本使用新的外连接语法。outer jo...
sqlplus格式化输出(输出结果显示在同一行)
在sqlplus执行sql时,经常碰到显示结果,跨行输出,致使可读性很差,看起来特别乱。可通过set linesize及column命令进行调整。set linesize 设置sqlplus输出的最大行宽column 这个命令很好用,可使用此命修改显示字段的长度或名称,如: column c1 format a20 &...
oracle行列转换-字符串转换成多列
有表t_col_str,数据如下:点击(此处)折叠或打开SQL> select * from t_str_col; ID C123---------- -------------------- &nb...
oracle行列转换-多行转换成字符串
建表语句及初始化数据脚本如下:点击(此处)折叠或打开SQL> create table t_row_str( 2 id int, 3 col varchar2(10));表已创建。SQL> insert into t_row_str values(1,\'a\');...