- 博客(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关注的人