随笔分类 - Oracle
摘要:Oracle 9i加入了支持一次向多个表同时插入数据的SQL语句 --- INSERT ALL|FIRST INTO…SELECT…FROM…INSERT ALL|FIRST [WHEN condition THEN] INTO target [VALUES] [WHEN condition THEN] INTO target [VALUES] ... [ELSE] INTO target [VA...
阅读全文
摘要:Subquery Factoring, 其实就是平常比较熟悉的With语句,Adrian Billington 在他的网站上写了一篇介绍Subquery Factoring很好的文章,见这里。这篇Blog同样是对他的这篇文章的笔记。 With语句一般有两种用途,一种就是用来把复杂的SQL语句简单化:复杂的SQL语句一般都会嵌套很多层次,无论是写起来还是读起来都很困难,通过用With语句,把子查询...
阅读全文
摘要:Adrian Billington 有一篇介绍Case Expression 和 Case Statement 的文章,写得很好,参见这里。 用过Case 很多次了,但是并没有很系统地学习过,看了他的这篇文章终于明白Case Expression和Case Statement的区别: 1. Case Expression 可以用在SQL和PL/SQL中,关于Case Expression最重要...
阅读全文
摘要:Partition Outer Join是Oracle 10g新增加的,用来方便“补足”在outer join的时候“漏掉”(NULL)的数据。 当两个用来做Join的表中的数据不“相当”的时候,如果我们希望在最终结果中其中一张表的所有records都不落下,一般会用到outer join。另外一个表中“缺失”的那部分数据自然都是以NULL来补足。但是如果我们希望缺失的那部分数据(NULL)能正...
阅读全文
摘要:Varchar2的大小限制在SQL和PL/SQL中是不一样的,这点经常被忘记,因此会遇到一些问题。 Oracle SQL中Varchar2类型只支持最大4000bytes,而pl/sql则可以支持最大32767bytes的大小!在创建Oracle Table时,如果一个列存储的数据大于4000bytes时候,最好换成CLOB类型。 下面进行一些测试看看, SQL> select * fr...
阅读全文
摘要:Adiran在他的网站上www.oracle-developer.net上给出一个有意思的Utility – data_dump, 用来把一个表中的数据dump到一个文件中。表面上看好像没啥大的价值,毕竟可以用export data pump来导出数据, 但是data_dump支持对给定的一个SQL语句来导出数据,而且可以指定每行数据的field之间的分隔符。 这个utility用起来也是非常方便...
阅读全文
摘要:Oracle 10g 增加了一个非常有用的 group 函数 ----- COLLECT, 并且在11g中得到了进一步加强。 这个函数可以用来实现“String Aggregation” 作用, 即把同一个group中的多行数据转成一行(以collection形式出现)。记得曾在园子中回答过一个SQL问题,见这里, 当时用到的是sys_connect_by_path,但是这种方法性能很不好,在下...
阅读全文
摘要:1. v$version SQL> desc v$version; Name Null? Type ------------------------------------------------------------------------------------------------- BANNER VARCHAR2(64) SQL> select * from v$vers...
阅读全文
摘要:Oracle 9i 引入了flashback query,可以方便我们查询过去一个时间“点”的数据库的状态。比如我们在T1时刻更改了一条记录,接着在T2时刻删除了该条数据(并且commit了),我们可以通过flashback query来查询到T1时刻的该条记录。 Oracle 10g把flashback query推进了一步,不光可以查询过去一个时间“点”的数据库状态, 而且可以查询过去一段时间...
阅读全文
摘要:默认的Select 语句的显示结果是把表中的每一条记录显示成一行,如果表的列数很多会带来一个问题(求其是在SQL*PLUS中),那就是要么列名显示不全,或者会折成很多行来显示,造成阅读上的不便。 如果我们只是很关心这种多列表中的特定一行或几行数据,如果可以把显示结果“转置”过来,每一行显示一个列的数据,这样会大大有助于阅读,分析数据。 多说无益,还是上例子说明。 如下, 默认的显示 SQL&g...
阅读全文
摘要:本文基本上是对Orace文档(http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciaggfns.htm#sthref542) 的翻译。 Oracle提供了很多预定义好的聚集函数,比如Max(), Sum(), AVG(), 但是这些预定义的聚集函数基本上都是适应于标量数据(scalar data), 对于复杂的数据类型...
阅读全文
摘要:Abstract: 行变列,列变行在生成报表的时候经常遇到,行变列叫做"Pivot”, 反之叫做"Unpivot”。 在Oracle11g之前,一般都是通过很多work around来实现,但是Oracle11g中直接支持PIVOT和UNPIVOT的操作。 关于PIVOT和UNPIVOT用法可以参见这里 1. Rows to Columns Rows to Columns是比较常见的操作,比...
阅读全文
摘要:Abstract: Function-based index 可以很巧妙地帮助我们实现“不一般”的unique index, 但是如果没有注意function-based index对于该index对应的function的要求,很有可能会触发ORA-01802这个错误。 本文尝试去阐述这个错误是如何触发的,以及如果去解决。 OK, let’s get down to business. 记得To...
阅读全文
摘要:Abstract: 这个读书笔记系列是关于Tom的大作《Expert Oracle Database Architecture》 Chapter 2: Architecture Overview 1. Oracle and Instance Oracle: A collection of physical operating system files or disk. Instance: b...
阅读全文
摘要:Abstract: 这个读书笔记系列是关于Tom的大作《Expert Oracle Database Architecture》 Chapter 1: Developing Successful Oracle Application 1. Bitmap index In the first session: Note: Don’t commit or rollback for now. Se...
阅读全文

浙公网安备 33010602011771号