自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 oracle 外联结

用scott/tiger登录。对于外连接, 可以使用“(+)”来表示。 关于使用(+)的一些注意事项:1.(+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。2. 当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符。3.(+)操作符只适用于列,而不能用在表达式上。4.(+)操作符不能

2014-03-31 22:45:47 621

原创 oracle 笛卡尔联结

用scott/tiger登录。笛卡尔连接是指在sql语句中没有写出表连接的条件或者表的连接条件不能约束两个表的连接,优化器把第一个表的每一条记录和第二个表的所有记录相连接。如果第一个表的记录数为m, 第二个表的记录数为n,则会产生m*n条记录数。SQL> set autotrace traceonlySQL> alter system flush buffer_cache

2014-03-31 22:01:15 940

转载 Oracle表连接操作——Merge Sort Join(合并排序连接)

http://blog.itpub.net/17203031/viewspace-697012关系型数据库并不是最早出现的数据库表现形式,之前还存在层次、网状数据库结构。随着关系型数据库的出现,以数据表的方式进行信息留存的方案迅速发展起来。关系型数据库的重要元素包括数据表和表连接,借助各种类型的表连接,可以将平铺直叙的信息加以组装拼接。  1、Merge Sort Jo

2014-03-31 21:56:44 1194

原创 oracle 散列联结 hash join

用sys登录。有关hash join的原理见http://blog.csdn.net/feier7501/article/details/22695117测试:SQL> conn /as sysdba已连接。SQL> create table segs as select * from dba_segments where owner='SYS';表

2014-03-31 21:52:30 621

转载 Oracle的Hash Join之探究整理

http://hwhuang.iteye.com/blog/1479076Hash join算法原理 自从oracke 7.3以来,oracle提供了一种新的join技术,就是hash join。Hash Join只能用于相等连接,且只能在CBO优化器模式下。相对于nested loop join,hash join更适合处理大型结果集。Hash join不需要在驱动表上存在索

2014-03-31 21:50:21 985

原创 oracle 排序-合并联结

用scott/tiger登录。SQL> set linesize 120SQL> set autotrace traceonlySQL> alter system flush buffer_cache;系统已更改。SQL> alter system flush shared_pool;系统已更改。SQL> select /*+ order

2014-03-31 21:22:45 563

原创 oracle 嵌套循环联结

用scott/tiger登录。嵌套循环联结就是一个循环嵌在另一个循环当中。SQL> set autotrace traceonlySQL> set linesize 120SQL> alter system flush buffer_cache;系统已更改。SQL> alter system flush shared_pool;系统已更改。SQL> se

2014-03-31 21:14:00 644

转载 oracle 高水位线 high water mark

转自oracle 高水位线详解一、什么是水线(High Water Mark)?所有的oracle段(segments,在此,为了理解方便,建议把segment作为表的一个同义词) 都有一个在段内容纳数据的上限,我们把这个上限称为"high water mark"或HWM。这个HWM是一个标记,用来说明已经有多少没有使用的数据块分配给这个segment。HWM通常增长的

2014-03-30 23:39:25 677

原创 oracle DB_FILE_MULTIBLOCK_READ_COUNT

oracle 官方文档:http://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams047.htmDB_FILE_MULTIBLOCK_READ_COUNTPropertyDescriptionParameter typeIntegerDefaul

2014-03-30 21:47:59 1344

原创 oracle 调整输出的列宽、行宽

调整列宽col,调整行宽set linesizebefore:C:\>sqlplus "/as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 3月 30 21:39:32 2014Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Or

2014-03-30 21:40:35 38654 3

原创 oracle 全扫描

如何选择全扫描操作先创建数据:C:\>sqlplus "/as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 3月 30 20:32:22 2014Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Oracle Database 10g En

2014-03-30 21:04:31 600

原创 oracle 全扫描和索引扫描

总共只有两种扫描方式:全表扫描和索引扫描。索引扫描还分几种:索引范围扫描、索引唯一扫描、索引全扫描、索引跳跃扫描、索引快速全扫描。先创建数据用于测试:CREATE TABLE TB_USER(    ID INTEGER NOT NULL,    USER_NAME VARCHAR2(20) NOT NULL,    USER_AGE INTEGER NOT NUL

2014-03-28 23:00:04 1907

原创 java 内存泄露、内存溢出、内存不足

内存泄露什么是内存泄露?在维基百科上的定义如图:中文意思就是一个对象在内存中,而程序无法获取此对象,于是不能释放该对象所占用的内存。百度百科上的定义如图:OWASP上的定义:开发者无法释放某块不会再使用的内存。用C语言解释一下,例如:#include void function_which_alloc

2014-03-28 20:23:40 1406

原创 java接口方法和类方法的区别 - 调用速度

调用接口方法比类方法慢。相关指令:invokeinterfaceb94: indexbyte1, indexbyte2, count, 0objectref, [arg1, arg2, ...] →invokes an interface method on object objectref, where the interface method is id

2014-03-27 22:41:01 1371

原创 oracle 自治事务

自治事务可以提交或者回滚其修改而不影响调用它的事务,一般用在错误日志上。创建日志表:CREATE TABLE TB_LOG( LOG_TIME TIMESTAMP NOT NULL );创建主事务需要的表:CREATE TABLE TB_MAIN (ID INTEGER PRIMARY KEY);创建自治事务的存储过程:CREATE OR RE

2014-03-27 22:33:20 535

原创 oracle SET CONSTRAINT[S]

相关文档:http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10003.htm#SQLRF55303语法:set_constraints::=先创建表:SQL> CREATE TABLE TB_CONS (ID INTEGER);表已创建。创建约束:SQL> AL

2014-03-27 22:10:25 1095

原创 oracle SET TRANSACTION

详细文档:http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_10005.htm#SQLRF01705语法:set_transaction::=NAMEC:\>sqlplus "/as sysdba"SQL*Plus: Release 10.2.0.1.0 -

2014-03-26 21:58:42 6065

原创 事务控制语句

总共只有5个事务控制语句:commit、savepoint、rollback、set transaction、set constraints。创建表:CREATE TABLE TB_USER( ID INTEGER PRIMARY KEY, USER_NAME VARCHAR2(20) NOT NULL, USER_AGE INTEGER NOT NULL);

2014-03-26 21:33:18 1906

原创 事务隔离级别

ANSI/ISO SQL标准定义了4个不同的事务隔离级别:未提交读、提交读、可重复读以及序列化,还定义了3种现象:脏读、不可重复读和幻读。区别:脏读是读取了没有COMMIT的数据,即读到的数据不是最新的。不可重复读是读取了另一个事务UPDATE后的数据。幻读是读取了另一个事务INSERT或者DELETE后的数据。

2014-03-26 20:33:01 448

原创 事务的ACID属性

所有的数据库事务都需要具有4个属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原子性:事务中的所有任务都必须执行或者都不执行。不存在部分事务。一致性:事务将数据库从一个一致性状态带到另一个一致性状态。隔离性:一个事务所带来的影响直到该事务提交之前对其他事务来说都是不可见的。持久性:经过提

2014-03-26 20:23:53 537

原创 oracle MERGE

用SCOTT/TIGER登录。MERGE是oracle 9i中引入的,一般就是UPDATE或者INSERT,从10g开始可以进行DELETE。创建表EMP1,并清空数据:CREATE TABLE EMP1 AS SELECT * FROM EMP;TRUNCATE TABLE EMP1;使用MERGE:MERGE INTO EMP1 T1USING (

2014-03-25 22:27:54 521

原创 java类的生命周期

请参考《深入java虚拟机第二版》。java虚拟机通过装载、连接和初始化一个java类型,使该类型可以被正在运行的java程序所使用。装载把二进制形式的java类型读入java虚拟机中;连接把读入的二进制数据合并到虚拟机的运行时状态中去,分三个子步骤:验证、准备和解析。验证确保java类型数据格式正确并且适于java虚拟机使用;准备负责为该类型分

2014-03-25 21:43:56 553

原创 JVM的class文件结构

请参考《深入java虚拟机第二版》和《java虚拟机规范》。java虚拟机规范链接:http://docs.oracle.com/javase/specs/jvms/se7/html/关于class文件结构的介绍:http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4.1Class

2014-03-25 21:27:47 701

原创 java同步方法和同步代码块的区别

同步代码块:package threads.ex1;class KitchenSync { private int[] intArray = new int[10]; void reverseOrder() { synchronized (this) { int halfWay = intArray.length / 2; for (int i = 0; i <

2014-03-25 21:13:27 20586 3

原创 oracle 多表插入

创建表:CREATE TABLE TB_USER( ID INTEGER PRIMARY KEY, USER_NAME VARCHAR2(20) NOT NULL, USER_AGE INTEGER NOT NULL);CREATE SEQUENCE SEQ_USERINCREMENT BY 1START WITH 1NOMAXVALUENOCYCLE

2014-03-24 22:03:45 638

原创 oracle 反联结 NOT IN、NOT EXISTS

用SCOTT/TIGER登录。创建小表:CREATE TABLE EMP1 AS WITH TEMP_EMP AS (SELECT ROWNUM RN, E.* FROM EMP E) SELECT * FROM TEMP_EMP WHERE RN BETWEEN 4 AND 10;使用NOT IN:SELECT EMPNO, ENAME FROM EMP WHERE EM

2014-03-23 13:31:08 660

原创 oracle 半联结 IN、EXISTS、=ANY

用SCOTT/TIGER登录。创建小表:‘CREATE TABLE EMP1 AS WITH TEMP_EMP AS (SELECT ROWNUM RN, E.* FROM EMP E) SELECT * FROM TEMP_EMP WHERE RN BETWEEN 4 AND 10;开启AUTOTRACE:SQL> SET AUTOTRACE ON查看IN的执行计划:

2014-03-22 23:16:51 525

原创 oracle 递归查询 CONNECT BY、START WITH、CONNECT_BY_ROOT、CONNECT_BY_ISLEAF、SYS_CONNECT_BY_PATH

创建表,初始化数据;CREATE TABLE TB_COMPANY( COMPANY_ID INTEGER PRIMARY KEY, COMPANY VARCHAR2(256), UP_COMPANYID INTEGER);INSERT INTO TB_COMPANY VALUES (0, '总公司', NULL);INSERT INTO TB_COMPANY VALUE

2014-03-22 18:21:37 13384 1

原创 oracle 子查询因子化 with as

使用SCOTT/TIGER登录。SQL:WITH TB_DEPT_COUNT AS (SELECT DEPTNO, SUM(SAL) FROM EMP GROUP BY DEPTNO) SELECT * FROM TB_DEPT_COUNT;结果:查看所有的表:表TB_DEPT_COUNT,相当于临时表。使用with as能简化SQL。不使用

2014-03-22 17:44:09 4554

原创 深入java虚拟机 - 垃圾收集 - 火车算法

主要看《深入java虚拟机》这本书。 下面转自http://blog.csdn.net/zouxinfox/article/details/1594216       垃圾收集算法一个很大的缺点就是难以控制垃圾回收所占用的CPU时间,以及何时需要进行垃圾回收。火车算法是分代收集器所用的算法,目的是在成熟对象空间中提供限定时间的渐进收集。目前应用于SUN公司的Hotspot虚拟机

2014-03-21 22:50:17 2123

转载 深入java虚拟机 - 垃圾收集 - 按代收集的收集器

主要看《深入java虚拟机》这本书。 下面转自http://www.cnblogs.com/gw811/archive/2012/10/19/2730258.html当前商业虚拟机的垃圾收集都采用“分代收集”(Generational Collection)算法,这种算法并没有什么新的思想,只是根据对象的存活周期的不同将内存划分为几块。一般是把Java堆分为新生代和老年代,这样就可

2014-03-21 22:47:09 537

转载 深入java虚拟机 - 垃圾收集 - 跟踪收集器

主要看《深入java虚拟机》这本书。下面转自http://blog.csdn.net/java2000_wl/article/details/8022293跟踪收集器采用的为集中式的管理方式,全局记录对象之间的引用状态,执行时从一些列GC  Roots的对象做为起点,从这些节点向下开始进行搜索所有的引用链,当一个对象到GC  Roots 没有任何引用链时,则证明此对象是不可

2014-03-21 22:32:17 1017

原创 深入java虚拟机 - 垃圾收集 - 引用计数收集器

引用计数是垃圾收集的早期策略。在这种方法中,堆中每一个对象都有一个引用计数。一个对象被创建了,并且指向该对象的引用被分配给一个变量,这个对象的引用计数被置为1。当任何其他变量被赋值为对这个对象的引用时,计数加1。当一个对象的引用超过了生存期或者被设置一个新的值时,对象的引用计数减1。任何引用计数为0的对象可以被当作垃圾收集。当一个对象被垃圾收集的时候,它引用的任何对象计数值减1。在这种方法中,一个

2014-03-21 22:26:14 1003

原创 oracle 高级分组 GROUPING SETS

用SCOTT/TIGER登录。grouping sets就是对参数中的每个参数做group,也就是有几个参数做几次group。SQL:SELECT JOB, DEPTNO, SUM(SAL) FROM EMP GROUP BY GROUPING SETS(JOB, DEPTNO);结果:

2014-03-21 22:10:55 798

原创 oracle 高级分组 GROUPING_ID

用SCOTT/TIGER登录。GROUPING_ID可以接收多个列,这几个列都不为空时,返回0,只要有一个为空,则返回1,如果都为空,则返回3。SQL:SELECT GROUPING_ID(JOB, DEPTNO), JOB, DEPTNO, SUM(SAL) FROM EMP GROUP BY ROLLUP(JOB, DEPTNO);结果:

2014-03-21 22:05:07 1283

原创 oracle 高级分组 GROUPING

用SCOTT/TIGER登录。GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用。当需要在返回空值的地方显示某个值时,GROUPING()就非常有用。SQL:SELECT GROUPING(JOB), JOB, SUM(SAL) FROM

2014-03-21 21:52:38 613

原创 oracle 分析函数 NTILE

用SCOTT/TIGER登录。NTILE函数对一个数据分区中的有序结果集进行划分,将其分组为各个桶,并为每个小组分配一个唯一的组编号。SQL:SELECT ENAME, SAL, NTILE(2) OVER (ORDER BY SAL ASC NULLS LAST) FROM EMP;结果:SQL:SELECT ENAME, SAL, N

2014-03-21 21:44:21 5483

原创 oracle 分析函数 FIRST_VALUE、LAST_VALUE

用SCOTT/TIGER登录。FIRST_VALUE、LAST_VALUE是两个分析函数。返回结果集中排在第一位和最后一位的值。使用FIRST_VALUE:SELECT DEPTNO, JOB, SUM(SAL), FIRST_VALUE(SUM(SAL)) OVER (PARTITION BY DEPTNO ORDER BY SUM(SAL) ROWS BETWE

2014-03-20 21:41:42 3559

原创 oracle 分析函数 LAG、LEAD

用SCOTT/TIGER登录。LAG()和LEAD()统计函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和 LEAD有更高的效率。SQL:SELECT JOB, SAL, LAG(SAL) OVER (ORDER BY JOB) FROM EMP;结果:SQL:SELEC

2014-03-20 21:11:49 736

原创 oracle 分析函数 RANK、DENSE_RANK、ROW_NUMBER

Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。 Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。 Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。用SCOTT/TIGER登录。

2014-03-20 20:43:27 608

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除