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...
通过spid,查找执行慢的sql脚本
通过top命令,可查看占用cpu资源极高的进程,得到spid,通过以下sql ,可查找此进程执行的具体sql点击(此处)折叠或打开SQL> edit已写入 file afiedt.buf 1 select 2 sql_text...
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\');...
oracle行列转换-多列转换成字符串
多列转换字符串可用||或concat函数。表数据如下:点击(此处)折叠或打开SQL> select * from t_col_row; ID C1 C2 C3---------- ---------- ---------- ----------...
oracle行列转换-行转列
接上篇文章。建表语句如下:点击(此处)折叠或打开SQL> create table t_row_col as 2 select id,\'c1\' cn,c1 cv from t_col_row 3 union all 4 select id,\'c2\' cn,c2 cv from t_col_row...
oracle行列转换-列转行
在itpub论坛看到一则贴子,行列转换总结,写的很全面。现将我的测试结果复上来,留着日后参考。附上测试脚本,有表及表中数据如下点击(此处)折叠或打开SQL> create table t_col_row( 2 id int, 3 c1 varchar2(10), &nbs...
start with connect by 用法
Oracle中的select语句可以用start with...connect by prior子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:select ... from <TableName>where <Conditional-1>start with <Conditional-2>connect by <Conditional-3>;<Conditional-1>:过滤条件,用于对返回的所有记录进行过滤。<Conditional...
根据某个字段值,产生想要的重复记录数
示例 ID NAME QTY 1 A 3 1 B 2 2 A 0 2 B 1 如何通过一条SQL得出以下结果呢? ID NAME QTY ROWNUM 1 A 3 1 1 A 3 2 1 A 3 3 1 B 2 1 1 B 2 2 2 B 1 1即根据QTY产生重复记录,产生的记录数=QTY值,如果为0不产生记录,QTY数值大小不固定[@more@]解决方法:下面的方法只是假设重复的最大记录为10条SQL> with test as 2 ( 3 select 1 ID, 'A' NAME , 3 QTY from dual union all 4 select 1
巧用grouping进行分组统计
grouping以前有遇到过,但不太记得,今天又在论坛刚到一则贴子,巧妙的运用了grouping进行分组统计与小计,下面记录如下:[@more@]例表数据如下:ID NAME GRADE1 a 101 a 151 b 51 b 101 c 202 a 5.....要求的结果是:对id,name分组合计,再对id求小计,要求小计时只对name 是a,b求和,不用UNION怎么写sql语句?结果集:ID NAME SUM(GRADE)1 a 251 b 151 c 201 小计 40 --ID=1时 name
巧用keep 进行分组
论坛贴子:已有数据:==========会计期 物料分类 期初 本期入 本期出 期末200901 C1 10 1 2 9200901 C2 10 1 3 8200902 C1 9 0 2 7200902 C2 8 1 2 7查询 200801-200912 的数据,查询结果:==========开始会计期 结束会计期 物料分类 期初 本期入 本期出 期末200901 200902 C1 10 1 4 7200901 200902 C2 10 2 5 7注意:期初,取查询范围内存在的最小会计期的
字符串截取从前几位到后几位
例:要截取一个字符串,从第一位到后第五位,该怎么操作???[@more@]方法一:SELECT REVERSE(SUBSTR(REVERSE('PENGWZHANIU'), 5)) STR FROM DUAL;--测试结果:pengwzh方法二:SELECT (CASE WHEN LENGTH(&STR) < 5 THEN &STR ELSE SUBSTR(&STR, 1, LENGTH(&STR) - 4) END) STR FROM DUAL;--测试结果:pengwzh说明:方法一是利用二次反向取,巧妙取出了第一位到后五位的字符串,方法二则先判断字符串长度,如果不够五位则全取,否则从第一位开始截取,截取字符个数为(整个长度-4)位
搬家了~~
前几天搬家了,从五环外搬到了三环了,生活高档了些了,可是米米少了好多了,心痛,不过上班近最重要,不想那么累啊,我还要多活几年,呵~~算是值了!!庆祝下下~[@more@]
表连接时update与delete操作需注意的地方
刚刚在论坛上又看到一则很老的精华贴子,经测试后越发觉的好,于是总结了下,发上来了,以后备用,呵~~~[@more@]一. 表连接的update测试 /*******************先看下面的测试******************/SQL> drop table test1;表已删除。SQL> drop table test;表已删除。SQL> create table test(a number,b number,c number ,d varchar2(6));表已创建。SQL> insert into test values(1,1,1,'1');已创建 1 行。SQL> insert into test values(2,2,2,'2');已创建 1 行。SQL> insert into test values(3,3,3,'3');已创建 1
translate函数
Translate函数与replace函数及其相似,都是用来做字符替换的,但又有所区别,replace是对整个字符替换为指定的字符,但translate是一个字符一个字符对应替换,区别看下面的sql[@more@]SQL> select translate('abc3243dbc','abc','efg') col from dual;COL----------efg3243dfgSQL> select replace('abc3243dbc','abc','efg') col from dual;COL----------efg3243dbc从上面的sql可以看出,replace函数是将整个字符abc替换为efg,而translate是将a替换为e,b替换为f,c替换为g。下面例举translate的其它几种情况SQL> select translat
rman备份恢复-rman恢复数据文件测试
最近开始学习rman备份恢复了,主要看的是三思的资料,要谢谢他了,呵~~根据测试的结果,整体了下测试的笔记,发上来,供日后复习了!这一章节主要讲的是恢复数据文件测试 [@more@]第四章 rman恢复测试 一、windows冷备后删除数据文件,rman恢复 在关闭数据库的前提下,直接在window复制所有的控制文件、数据文件及参数文件,即D:oracleproduct10.2.0oradataorcl将orcl整个文件夹copy一份,接着做一下的操作。 --创建表空间 SQL> create tablespace "TEST01" 2 logging 3 datafile 'D:oracleproduct10.2.0oradataorc
rman备份恢复-定制rman备份计划
最近开始学习rman备份恢复了,主要看的是三思的资料,要谢谢他了,呵~~根据测试的结果,整体了下测试的笔记,发上来,供日后复习了!这一章节主要讲的是定制rman备份计划[@more@]第三章 实战rman备份 一、定制rman脚本 要求如下: 1、每天夜间1点执行; 2、数据库全备,同时备份控制文件及归档日志文件,备份文件保存至:D:backup目录下,并在完成归档日志文件备份后,自动删除已备份的归档日志; 3、备份保留7天,过期则自动删除; 4、保留操作日志备查; 开始编写rman脚本,并保存至F:oracleScriptbackupdatabase_backup_orc