oracle_sql
文章平均质量分 71
rudy_gao
这个作者很懒,什么都没留下…
展开
-
Oracle group by 用法实例详解
1. Group by的语法Select [filed1,fild2,]聚合函数(filed),[Grouping(filed),][Grouping_id(filed1,filed2,…)]From tablenameWhere condition[Group by {rollup|cube}(filed,filed2)][having c转载 2013-10-25 09:17:33 · 1329 阅读 · 0 评论 -
not exists 与 select null,select 1的作用
1. 在使用not exitisipk create table tmp01 as with tmp as ( select 1 as id from dual union all select 2 from dual union all select 3 from dual union all select null from dual原创 2014-06-09 11:21:32 · 4981 阅读 · 0 评论 -
Oracle deferrable、immediate 约束
oracle数据库中的所有约束默认情况下都是立即触发的,也就是说在语句运行结束后数据库会检查数据的一致性状态.其中not deferrable 与initially immediate是一样的,与deferrable initially immediate则不同。后者允许将constraint再改为initially deferred, 前者不允许更改:>create table test转载 2014-07-01 17:17:10 · 3046 阅读 · 0 评论 -
refer cursor,sql转json数据
1.前提条件,安装json的包2.创建原创 2014-08-01 19:39:36 · 2528 阅读 · 0 评论 -
oracle分页
SQL> SELECT * 2 FROM SCOTT.EMP 3 WHERE ROWID IN (SELECT RID 4 FROM (SELECT ROWNUM RN, RID 5 FROM (SELECT ROWID RID, SAL FROM原创 2014-08-07 17:46:57 · 557 阅读 · 0 评论 -
关于oracle select distinct order by的问题
SELECT语句中含有DISTINCT关键字或者有运算符时,排序用字段必须与SELECT语句中的字段相对应。网上搜到解释如下:在ORDER BY中指定多个列,结果将先按照子句中的第一列排序,然后第二个,依此类推。在SELECT中未出现的列名也可用于ORDER BY 子句中,只要TABLE中有就行。但如果SELECT子句中出现了DISTINCT关键字,则只能用出现过的转载 2014-08-06 17:06:25 · 840 阅读 · 0 评论 -
Oracle的Replace函数与translate函数详解与比较
简要比较: replace 字符串级别的代替 如:SELECT REPLACE('accd','cd','ef') from dual; --> aefd translate 字符级别的代替 如:select translate('acdd','cd','ef') from dual; -->aeff 分别转载 2014-08-14 13:29:59 · 703 阅读 · 0 评论 -
ORACLE MODEL子句学习笔记
RACLE 10G中新增的MODEL子句可以用来进行行间计算。MODEL子句允许像访问数组中元素那样访问记录中的某个列。这就提供了诸如电子表格计算之类的计算能力。 1、MODEL子句示例下面这个查询获取2003年内由员工#21完成的产品类型为#1和#2的销量,并根据2003年的销售数据预测出2004年1月、2月、3月的销量。 select prd_type_id,year,mo转载 2014-08-14 13:50:10 · 580 阅读 · 0 评论 -
分析函数
ratio_to_report报表处理函数除报告详细数据外,许多报告中还包括每行总数的百分比。例如,每名客户的订单相对于总订单的百分比,或每位销售代表的销售额相对于总销售额的百分比。传统上,Oracle计算百分比的方法是在总计报告的子查询中使用SUM函数总计报告,然后把那个结果放到细节表中相除来计算百分比。分析函数RATIO_TO_REPORT 用来计算当前记录的指标exp转载 2014-08-15 16:12:53 · 814 阅读 · 0 评论 -
如何让in/exists 子查询(半连接)作为驱动表?
怎么才能让子查询作为驱动表? SQL如下:[html] view plaincopyprint?select rowid rid from its_car_pass7 v where 1 = 1 and pass_datetime >= to_date('2013-07-06 :17:46:转载 2014-08-15 17:57:36 · 679 阅读 · 0 评论 -
Oracle bulk 示例
Oracle有2个引擎来执行PL/SQL blocks 和 subprograms。那么在执行的时候,PL/SQL 引擎把DML 语句发送给SQL 引擎,然后由SQL 引擎执行,执行完毕后,SQL 引擎把结果集在发送给PL/SQL 引擎。 与bulk 相关的有2个语法:forall 和 bulk collect。 (1)FORA转载 2014-08-16 14:31:42 · 802 阅读 · 0 评论 -
oracle 左连接 右连接 全连接
---SELECT COUNT(*) FROM WCS_CUSTOMER_FAVORITE_TASKS WC, LABAC_TASKS LT WHERE (LT.TASK_ID(+) = WC.TASK_ID AND LT.TASK_END_TIME(+) IS NULL); SELECT COUNT(*) FROM WCS_CUSTOMER_FAVORITE_TASK原创 2014-08-16 16:16:23 · 618 阅读 · 0 评论 -
SORT AGGREGATE-count与索引
create table t_count as select * from dba_objects;create index t_count_i on t_count(object_id):分别用:select count(*) from t_count;select count(object_id) from t_count;select count(object_n原创 2014-08-16 16:03:00 · 1848 阅读 · 0 评论 -
Oracle 11g 行列互换 pivot 和 unpivot 说明
针对Oracle 11g 之前版本的行列转换,之前整理过一篇文档:Oracle 行列转换 总结http://blog.csdn.net/tianlesoftware/article/details/4704858 在Oracle 11g中,Oracle 又增加了2个查询:pivot 和 unpivot。 pivot:行转列unpivot:列转转载 2014-08-15 17:00:10 · 615 阅读 · 0 评论 -
SQL有外连接的时候注意过滤条件位置
发现了一个SQL确实跑得慢。该SQL 如下[html] view plaincopyprint?select * from (select u.NAME UniversityName, u.id UniversityId, count(a.SIGNUPNUMBER) p转载 2014-08-16 09:29:18 · 795 阅读 · 0 评论 -
Oracle Index Clustering Factor 说明
一. 官网说明 The indexclustering factor measures row order in relation to an indexed value suchas employee last name. The more order that exists in rowstorage for this value, the lower the clu转载 2014-08-16 14:18:10 · 704 阅读 · 0 评论 -
ORACLE直接路径操作
总结:直接路径插入直接在高水位线以外分配空间,绕过了数据缓冲区,直接将数据插入进表所在数据文件中。直接路径插入不产生Redo(数据库处于NOARCHIVELOG模式下插入或者NOLOGGING属性的表格上插入)和Undo Log,依赖高水点实现回滚。 *数据库日志模式http://blog.csdn.net/fw0124/article/details/690172转载 2014-10-20 10:08:37 · 1885 阅读 · 0 评论 -
Library cache lock/pin详解
一、概述---本文是网络资料加metalink 等整理得来一个实例中的library cache包括了不同类型对象的描述,如:游标,索引,表,视图,过程,等等. 这些对象不能在他们被使用的时候改变,他们在被使用的时候会被一种library locks and pins的机制锁住. 一个会话中,需要使用一个对象,会在该对象上先得到一个library lock(null, shared o转载 2015-01-27 12:04:23 · 1115 阅读 · 0 评论 -
not in/not exists 的 null 陷阱
以前遇到了 not in 子查询的一个 null 陷阱,有经验的朋友可能知道怎么回事了,用代码简单说明一下:-- 创建两张测试表:create table tmp01 as with tmp as ( select 1 as id from dual union all select 2 from dual union all select 3转载 2014-06-09 10:55:15 · 559 阅读 · 0 评论 -
oracle嵌套表
2. 查询嵌套表INSERT INTO TEMP_REVIEW_COMMENTS SELECT T3.COLUMN_VALUE, 3, 1 FROM LABAC_PROJECTS T1, TABLE(T1.PROJECT_PREAPPROVE_REASONS) T3;3. 更新嵌套表数据 UPDATE TABLE(SELECT t1.commod原创 2014-06-09 15:58:06 · 674 阅读 · 0 评论 -
oracle清除缓存
SQL>ALTER SYSTEM FLUSH SHARED_POOL/BUFFER_CACHE/GLOBAL CONTEXT原创 2013-10-25 09:04:50 · 1484 阅读 · 0 评论 -
oracle count函数
1. count函数1.1. count查询结果count(*)是以所有字段做countcount(1)是以查询结果第一个字段做count,两者的结果是一样的这里的1应该不是位置变量,相当于给*的结果加一个值为1伪列,再count 1的数量所以结果和count(*)是一样的,即count(rowid)count(1),你可以理解成有个字段,这个字段就是固定值1,那么也是原创 2013-10-25 08:53:48 · 3390 阅读 · 0 评论 -
ORACLE connect by
Oracle 实在太强了,本篇文章详细介绍了Oracle的递归查询语法,利用此语法,可以方便地实现递归的双向查询:-- Tirle : Recursion query for TREE with "connect by/start with"-- Author : Rake Gao-- Create Date : 2005-08-22-- Versio转载 2014-02-23 08:14:04 · 571 阅读 · 0 评论 -
pivoting insert(旋转插入)
pivoting insert 实现将非关系性表记录转换为关系型表中存储。Pivot 旋转是OLAP 中的一个基本改变,提供多维度数据分析。比如一个表为sales_source_data,里面的列为 employee_id number,week_id number,sales_mon number,sales_tue number,sales_wed number,sales_thur n原创 2014-02-24 18:23:18 · 1348 阅读 · 0 评论 -
sql的with as高效语法
1 . with a aswith a as (select * from test) select * from a;其实就是把一大堆重复用到的SQL语句放在with as 里面,取一个别名,后面的查询就可以用它这样对于大批量的SQL语句起到一个优化的作用,而且清楚明了转载 2014-02-23 10:23:26 · 6849 阅读 · 0 评论 -
Oracle Merge 使用
1. merge 的使用merge 基本用法merge删除2.rollup cuberollup cube用法Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和updates操作. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表.在Oracle10g中MER转载 2014-02-25 09:49:28 · 570 阅读 · 0 评论 -
ORACLE 中IN和EXISTS比较
EXISTS的执行流程 select * from t1 where exists ( select null from t2 where y = x ) 可以理解为: for x in ( select * from t1 ) loop if ( exists ( select null from t2 where y = x.x )转载 2014-02-25 10:42:15 · 598 阅读 · 0 评论 -
INSERT ALL和INSERT FIRST语法
在数据仓库中的转换和装载过程中,可能会使用INSERT ALL语句,这篇文章简单介绍一下INSERT ALL语句。但在ETL工具中很多组件也有类似的功能,实现逻辑雷同。虽然INSERT ALL是9i新增的语法,它扩充了原有的INSERT语句,使得INSERT语句从原来的只能插入到一张表发展到可以同时插入多张表,还可以根据判断条件来决定每条记录插入到哪张或哪几张表中。1、不带条件的I转载 2014-02-25 09:48:05 · 2656 阅读 · 0 评论 -
字符串当作数值进行比较
1. 今天在做项目时,发现从数据库中取出的结果总与预期的不一样,最后发现有人把一条sql把字符串当作数值进行比较大小,模拟如下:创建表:SQL> create table t(t1 number(3),t2 varchar2(3));插入数据:SQL> insert into t values(1,'1');SQL> insert into t valu原创 2014-02-26 17:15:09 · 2750 阅读 · 0 评论 -
把具有相同字段的纪录删除,只留下一条
一,多步骤实现1. 将重复的记录记入temp1表: select [标志字段id],count(*) into temp1 from [表名] group by [标志字段id] having count(*)>12、将不重复的记录记入temp1表: insert temp1 select [标志字段id],count(*) from转载 2014-02-27 09:41:40 · 885 阅读 · 0 评论 -
oracle over (partition by )用法
一:分析函数overOracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行。 下面通过几个例子来说明其应用。 1:统计某商店的营业额。 date sale 1转载 2014-03-09 17:45:21 · 896 阅读 · 0 评论 -
to_date格式化输出与比较
1. to_date(str,format)中str的格式应该与format的格式相同原创 2014-04-14 15:45:17 · 2097 阅读 · 0 评论 -
Sql开发与应用
1. create table a1 (id number(*,2)); // number(*,2)原创 2014-04-16 11:34:44 · 478 阅读 · 0 评论 -
Oracle Exists 用法
sql exists和not exists用法 exists (sql 返回结果集,为真) not exists (sql 不返回结果集,为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AID N转载 2014-03-27 09:14:05 · 1207 阅读 · 0 评论 -
where current of 子句
PL/SQL提供为update和delete语句在cursor中使用提供了where current of子句。这个子句让你容易地进行update和delete操作对最近fetch的行进行操作。 语法: UPDATE table_name SET set_clause WHERE CURRENT OF cursor_name; DELETE转载 2014-05-15 10:54:49 · 3328 阅读 · 0 评论 -
使用SQLPLUS生成HTML报表
我们可以在SQLPLUS中手工运行AWR,ASH的脚本生成HTML报表,下面来简单讲讲怎么利用SQLPLUS来生成HTML报表在SQLPLUS中有个命令(具体可以参考官方文档SQLPLUS部分)SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON | OFF}] [SPOOL {O转载 2014-04-27 20:08:06 · 1119 阅读 · 0 评论 -
左外连接 where条件 on条件
SQL> CREATE TABLE t1 AS SELECT ROWNUM ID FROM dual CONNECT BY ROWNUMTable createdSQL> SELECT * FROM t1; ID---------- 1 2 3 4 5原创 2014-06-09 22:33:37 · 14547 阅读 · 1 评论 -
varchar2的参数(byte和char)区别
由于一个汉字在我的GBK系统里占用2个字节,所以byte的只能插入2个汉字,而char的可以插入5个汉字。所以byte 就是字节数,对于汉字,GBK占用2个字节,如果是UTF-8则占用3个字节。为了充分利用4000个的上限,给自己减少麻烦,建议存储含有中文文字的字段时,采用char类型。下面是测试SQL> create table test(name varchar(5 b转载 2015-05-05 15:05:40 · 1749 阅读 · 0 评论