<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Ruthless-JAVA</title><subtitle type="text">Oracle、Linux、Java、J2ee、Android、jQuery交流群: 142463980</subtitle><id>http://feed.cnblogs.com/blog/u/83240/rss</id><updated>2012-06-01T03:19:02Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/83240/rss"/><entry><id>http://www.cnblogs.com/linjiqin/archive/2012/06/01/2529829.html</id><title type="text">ibatis注意要点</title><summary type="text">一、ibatis的关键字like查询select * from t_student wheres_name '%张%';这种like语句在ibatis中怎么写，他们现在的项目是用ibatis作为持久层的框架。我的第一反应是这样写：&lt;select id="showOneStudentByName" parameterClass="String" resultMap="studentORM"&gt;select * from t_student wheres_name like #name#&lt;/select&amp;g</summary><published>2012-06-01T01:29:00Z</published><updated>2012-06-01T01:29:00Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linjiqin/archive/2012/06/01/2529829.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/archive/2012/06/01/2529829.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、ibatis的关键字like查询&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;select * from t_student where&amp;nbsp;s_name '%张%';&lt;/p&gt;&lt;p&gt;这种like语句在ibatis中怎么写，他们现在的项目是用ibatis作为持久层的框架。&lt;/p&gt;&lt;p&gt;我的第一反应是这样写：&lt;br /&gt;&amp;lt;select id="showOneStudentByName" parameterClass="String" resultMap="studentORM"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;select * from t_student where&amp;nbsp;s_name like #name#&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;/p&gt;&lt;p&gt;但是在调用中需要在参数的前后加上%，比如这样：&lt;br /&gt;return sqlMapper.queryForList("showOneStudentByName", "%"+name+"%");&lt;/p&gt;&lt;p&gt;虽然这样可行，但总显得有些不协调。仔细看了ibaitis的文档后发现最好的写法是这样&lt;br /&gt;&amp;lt;select id="showOneStudentByName" parameterClass="String" resultMap="studentORM"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; select * from t_student where s_name like &lt;span style="color: #ff0000;"&gt;'%'||#name#||'%'&lt;/span&gt; &lt;br /&gt;&amp;lt;/select&amp;gt;&lt;/p&gt;&lt;p&gt;在调用的时候就不用去前后加%了。&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;注意：sql语句不要写成select * from t_student where s_name like '%$name$%',这样极易受到注入攻击。&lt;/span&gt;&lt;br /&gt;网上搜了一下ibatis的关于like的使用,撇开 '%$xxx$%' 不讲。网上的解决方法如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #808080;"&gt;*&lt;/span&gt;   &lt;br/&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;user&lt;/span&gt;  &lt;br/&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; username &lt;span style="color: #808080;"&gt;like&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;%&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #808080;"&gt;||&lt;/span&gt;#username#&lt;span style="color: #808080;"&gt;||&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;%&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;/div&gt;&lt;p&gt;其实上面的语句是针对Oracle 的，对于不同数据库字符串连接符不一样。 现列举mysql&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;select&lt;/span&gt; &lt;span style="color: #808080;"&gt;*&lt;/span&gt;   &lt;br/&gt;&lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;user&lt;/span&gt;  &lt;br/&gt;&lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; username &lt;span style="color: #808080;"&gt;like&lt;/span&gt; concat(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;%&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, #username#, &lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;%&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;) &lt;/div&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、ibatis操作陷阱&lt;/strong&gt;&lt;br /&gt;在使用iBatis操作数据的时候，容易跌入陷阱。&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;1、保存insert方法&lt;/span&gt;&lt;br /&gt;在保存数据方面，iBatis的insert方法返回的是新增记录的主键，类型为Object，但实为整型，有时候会让人误解为实体类型，也并非任何表的insert操作都会返回主键----这是一个陷阱。&lt;br /&gt;要返回这个新增记录的主键，前提是表的主键是自增型的，或者是Sequence的。否则获取新增记录主键的值为0或者null。&lt;br /&gt;对于oracle这样来写：&lt;br /&gt;&amp;lt;selectKey resultClass="int" keyProperty="id"&amp;gt;&lt;br /&gt;&amp;lt;![CDATA[&lt;br /&gt;select hibernate_seq.nextval as id from dual&lt;br /&gt;]]&amp;gt;&lt;br /&gt;&amp;lt;/selectKey&amp;gt;&lt;br /&gt;对比Hibernate返回的Serializable类型，实际上也是主键。&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;2、更新删除update/delete方法&lt;/span&gt;&lt;br /&gt;返回影响的记录行数。&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;3、对DAO/Service设计时候的影响&lt;/span&gt;&lt;br /&gt;1)、对于自增主键类型表，DAO的save方法可以返回主键、或者实体对象（该对象的标识符域会填充上主键值）。&lt;br /&gt;2)、对于非自增主键类型表，DAO的save方法，在保存之前就指导整个实体对象的所有值（包括主键），因此返回什么 都可以，也可以不返回值。&lt;br /&gt;3)、对于Service的，不管表如何，一般都返回保存的实体对象。&lt;/p&gt;&lt;p&gt;-----------------------------------------------------------------------------------&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Blog：&lt;a href="http://www.cnblogs.com/linjiqin/"&gt;http://www.cnblogs.com/linjiqin/&lt;/a&gt;&lt;br /&gt;J2EE、Android、Linux、Oracle QQ交流群：142463980、158560018(满)&lt;/p&gt;&lt;p&gt;题外话：&lt;br /&gt;本人来自铁观音的发源地&amp;mdash;&amp;mdash;泉州安溪，正宗安溪铁观音，有需要的友友欢迎加我Q:416501600。&lt;br /&gt;茶叶淘宝店：&lt;a href="http://shop61968332.taobao.com/"&gt;http://shop61968332.taobao.com/&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;img src="http://www.cnblogs.com/linjiqin/aggbug/2529829.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linjiqin/archive/2012/06/01/2529829.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linjiqin/archive/2012/05/28/2521451.html</id><title type="text">ibatis 简介</title><summary type="text">相对Hibernate和Apache OJB等“一站式”ORM解决方案而言，ibatis是一种“半自动化”的ORM实现。 所谓“半自动”，可能理解上有点生涩。纵观目前主流的ORM，无论Hibernate还是Apache OJB，都对数据库结构提供了较为完整的封装，提供了从POJO到数据库表的全套映射机制。程序员往往只需定义好了POJO到数据库表的映射关系，即可通过Hibernate或者OJB提供的方法完成持久层操作。程序员甚至不需要对SQL的熟练掌握，Hibernate/OJB会根据制定的存储逻辑，自动生成对应的SQL并调用JDBC接口加以执行。 大多数情况下（特别是对新项目，新系统的开发而.</summary><published>2012-05-28T08:00:00Z</published><updated>2012-05-28T08:00:00Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linjiqin/archive/2012/05/28/2521451.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/archive/2012/05/28/2521451.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 相对Hibernate和Apache OJB等&amp;ldquo;一站式&amp;rdquo;ORM解决方案而言，ibatis是一种&amp;ldquo;半自动化&amp;rdquo;的ORM实现。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 所谓&amp;ldquo;半自动&amp;rdquo;，可能理解上有点生涩。纵观目前主流的ORM，无论Hibernate还是Apache OJB，都对数据库结构提供了较为完整的封装，提供了从POJO到数据库表的全套映射机制。程序员往往只需定义好了POJO到数据库表的映射关系，即可通过Hibernate或者OJB提供的方法完成持久层操作。程序员甚至不需要对SQL的熟练掌握，Hibernate/OJB会根据制定的存储逻辑，自动生成对应的SQL并调用JDBC接口加以执行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 大多数情况下（特别是对新项目，新系统的开发而言），这样的机制无往不利，大有一统天下的势头。但是，在一些特定的环境下，这种一站式的解决方案却未必灵光。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在笔者的系统咨询工作过程中，常常遇到以下情况：&lt;br /&gt;1．系统的部分或全部数据来自现有数据库，处于安全考虑，只对开发团队提供几条Select SQL（或存储过程）以获取所需数据，具体的表结构不予公开。&lt;br /&gt;2．开发规范中要求，所有牵涉到业务逻辑部分的数据库操作，必须在数据库层由存储过程实现（就笔者工作所面向的金融行业而言，工商银行、中国银行、交通银行，都在开发规范中严格指定）&lt;br /&gt;3．系统数据处理量巨大，性能要求极为苛刻，这往往意味着我们必须通过经过高度优化的SQL语句（或存储过程）才能达到系统性能设计指标。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 面对这样的需求，再次举起Hibernate大刀，却发现刀锋不再锐利，甚至无法使用，奈何？恍惚之际，只好再摸出JDBC准备拼死一搏&amp;hellip;&amp;hellip;，说得未免有些凄凉，直接使用JDBC进行数据库操作实际上也是不错的选择，只是拖沓的数据库访问代码，乏味的字段读取操作令人厌烦。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;ldquo;半自动化&amp;rdquo;的ibatis，却刚好解决了这个问题。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #ff0000;"&gt; 这里的&amp;ldquo;半自动化&amp;rdquo;，是相对Hibernate等提供了全面的数据库封装机制的&amp;ldquo;全自动化&amp;rdquo;ORM实现而言，&amp;ldquo;全自动&amp;rdquo;ORM实现了POJO和数据库表之间的映射，以及SQL的自动生成和执行。而ibatis的着力点，则在于POJO与SQL之间的映射关系。也就是说，ibatis并不会为程序员在运行期自动生成SQL执行。具体的SQL需要程序员编写，然后通过映射配置文件，将SQL所需的参数，以及返回的结果字段映射到指定POJO。&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用ibatis提供的ORM机制，对业务逻辑实现人员而言，面对的是纯粹的Java对象，这一层与通过Hibernate实现ORM而言基本一致，而对于具体的数据操作，Hibernate会自动生成SQL语句，而ibatis则要求开发者编写具体的SQL语句。相对Hibernate等&amp;ldquo;全自动&amp;rdquo;ORM机制而言，ibatis以SQL开发的工作量和数据库移植性上的让步，为系统设计提供了更大的自由空间。作为&amp;ldquo;全自动&amp;rdquo;ORM 实现的一种有益补充，ibatis 的出现显得别具意义。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;-----------------------------------------------------------------------------------&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Blog：&lt;a href="http://www.cnblogs.com/linjiqin/"&gt;http://www.cnblogs.com/linjiqin/&lt;/a&gt;&lt;br /&gt;J2EE、Android、Linux、Oracle QQ交流群：142463980、158560018(满)&lt;/p&gt;&lt;p&gt;题外话：&lt;br /&gt;本人来自铁观音的发源地&amp;mdash;&amp;mdash;泉州安溪，正宗安溪铁观音，有需要的友友欢迎加我Q:416501600。&lt;br /&gt;茶叶淘宝店：&lt;a href="http://shop61968332.taobao.com/"&gt;http://shop61968332.taobao.com/&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;img src="http://www.cnblogs.com/linjiqin/aggbug/2521451.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linjiqin/archive/2012/05/28/2521451.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linjiqin/archive/2012/05/23/2514795.html</id><title type="text">oracle物化视图日志结构</title><summary type="text">物化视图的快速刷新要求基本必须建立物化视图日志，这篇文章简单描述一下物化视图日志中各个字段的含义和用途。 物化视图日志的名称为MLOG$_后面跟基表的名称，如果表名的长度超过20位，则只取前20位，当截短后出现名称重复时，Oracle会自动在物化视图日志名称后面加上数字作为序号。物化视图日志在建立时有多种选项：可以指定为ROWID、PRIMARY KEY和OBJECT ID几种类型，同时还可以指定SEQUENCE或明确指定列名。上面这些情况产生的物化视图日志的结构都不相同。任何物化视图都会包括的4列：SNAPTIME$$：用于表示刷新时间。DMLTYPE$$：用于表示DML操作类型，I表示I.</summary><published>2012-05-23T06:53:00Z</published><updated>2012-05-23T06:53:00Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linjiqin/archive/2012/05/23/2514795.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/archive/2012/05/23/2514795.html"/><content type="html">&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 物化视图的快速刷新要求基本必须建立&lt;span style="color: #ff0000;"&gt;物化视图日志&lt;/span&gt;，这篇文章简单描述一下物化视图日志中各个字段的含义和用途。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 物化视图日志的名称为&lt;span style="color: #ff0000;"&gt;MLOG$_后面跟基表的名称&lt;/span&gt;，如果表名的长度超过20位，则只取前20位，当截短后出现名称重复时，Oracle会自动在物化视图日志名称后面加上数字作为序号。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;物化视图日志在建立时有多种选项：可以指定为ROWID、PRIMARY KEY和OBJECT ID几种类型，同时还可以指定SEQUENCE或明确指定列名。上面这些情况产生的物化视图日志的结构都不相同。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;任何物化视图都会包括的4列：&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;SNAPTIME$$&lt;/span&gt;：用于表示刷新时间。&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;DMLTYPE$$&lt;/span&gt;：用于表示DML操作类型，I表示INSERT，D表示DELETE，U表示UPDATE。&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;OLD_NEW$$&lt;/span&gt;：用于表示这个值是新值还是旧值。N（EW）表示新值，O（LD）表示旧值，U表示UPDATE操作。&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;CHANGE_VECTOR$$&lt;/span&gt;：表示修改矢量，用来表示被修改的是哪个或哪几个字段。&lt;br /&gt;如果WITH后面跟了ROWID，则物化视图日志中会包含：M_ROW$$：用来存储发生变化的记录的ROWID。&lt;br /&gt;如果WITH后面跟了PRIMARY KEY，则物化视图日志中会包含主键列。&lt;br /&gt;如果WITH后面跟了OBJECT ID，则物化视图日志中会包含：SYS_NC_OID$：用来记录每个变化对象的对象ID。&lt;br /&gt;如果WITH后面跟了SEQUENCE，则物化视图日子中会包含：SEQUENCE$$：给每个操作一个SEQUENCE号，从而保证刷新时按照顺序进行刷新。&lt;br /&gt;如果WITH后面跟了一个或多个COLUMN名称，则物化视图日志中会包含这些列。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;下面通过例子进行详细说明：&lt;/p&gt;&lt;p&gt;SQL&amp;gt; create table &lt;span style="color: #ff0000;"&gt;t_rowid&lt;/span&gt; (id number, name varchar2(30), num number);&lt;br /&gt;表已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; create materialized view log on &lt;span style="color: #ff0000;"&gt;t_rowid&lt;/span&gt; with rowid, sequence (name, num) including new values;&lt;br /&gt;实体化视图日志已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; create table &lt;span style="color: #ff0000;"&gt;t_pk&lt;/span&gt; (id number primary key, name varchar2(30), num number);&lt;br /&gt;表已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; create materialized view log on &lt;span style="color: #ff0000;"&gt;t_pk&lt;/span&gt; with primary key;&lt;br /&gt;实体化视图日志已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; create type &lt;span style="color: #ff0000;"&gt;t_object&lt;/span&gt; as object (id number, name varchar2(30), num number);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&lt;br /&gt;类型已创建&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; create table &lt;span style="color: #ff0000;"&gt;t_oid&lt;/span&gt; of &lt;span style="color: #ff0000;"&gt;t_object&lt;/span&gt;;&lt;br /&gt;表已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; desc t_oid;&lt;br /&gt;名称&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 是否为空? 类型&lt;br /&gt;----------------------------------------- -------- ---------------&lt;br /&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(30)&lt;br /&gt;NUM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; create materialized view log on&lt;span style="color: #ff0000;"&gt; t_oid&lt;/span&gt; with object id;&lt;br /&gt;实体化视图日志已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;建立环境后来看看物化视图日志中包含的字段：&lt;br /&gt;SQL&amp;gt; desc mlog$_t_rowid;&lt;br /&gt;名称&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 是否为空? 类型&lt;br /&gt;----------------------------------------- -------- -------------&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(30)&lt;br /&gt;NUM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&lt;br /&gt;M_ROW$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(255)&lt;br /&gt;SEQUENCE$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&lt;br /&gt;SNAPTIME$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATE&lt;br /&gt;DMLTYPE$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(1)&lt;br /&gt;OLD_NEW$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(1)&lt;br /&gt;CHANGE_VECTOR$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RAW(255)&lt;br /&gt;除了最基本的4列之外，由于指定了ROWID、SEQUENCE和NAME、NUM列，因此物化视图日志中包含了相对应的列。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; desc mlog$_t_pk;&lt;br /&gt;名称&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 是否为空? 类型&lt;br /&gt;----------------------------------------- -------- ------------&lt;br /&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&lt;br /&gt;SNAPTIME$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATE&lt;br /&gt;DMLTYPE$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(1)&lt;br /&gt;OLD_NEW$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(1)&lt;br /&gt;CHANGE_VECTOR$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RAW(255)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;对象表的物化视图日志建立后包含系统对象标识列。&lt;br /&gt;&lt;strong&gt;一、主键列、ROWID列、OBJECT ID列、SEQUENCE列和建立物化视图时指明的列。&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;主键、ROWID或OBJECT ID用来唯一表示物化视图日志中的记录。&lt;/span&gt;&lt;br /&gt;SEQUENCE会根据操作发生的顺序对物化视图日志中的记录编号。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;建立物化视图时&lt;span style="color: #ff0000;"&gt;指明的列会在物化视图日志中进行记录&lt;/span&gt;。&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;SQL&amp;gt; insert into t_pk values (1, 'a', 5);&lt;br /&gt;已创建 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_pk set name = 'c' where id = 1;&lt;br /&gt;已更新 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; delete t_pk;&lt;br /&gt;已删除 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select id, dmltype$$ from mlog$_t_pk;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID D&lt;br /&gt;---------- -&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 I&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 U&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 D&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_oid values (1, 'a', 5);&lt;br /&gt;已创建 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_oid set name = 'c' where id = 1;&lt;br /&gt;已更新 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; delete t_oid;&lt;br /&gt;已删除 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select sys_nc_oid$, dmltype$$ from mlog$_t_oid;&lt;br /&gt;SYS_NC_OID$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D&lt;br /&gt;-------------------------------- -&lt;br /&gt;18DCFDE5D65B4D5A88602D6C09E5CE20 I&lt;br /&gt;18DCFDE5D65B4D5A88602D6C09E5CE20 U&lt;br /&gt;18DCFDE5D65B4D5A88602D6C09E5CE20 D&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; rollback;&lt;/p&gt;&lt;p&gt;回退已完成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、时间列&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当基本发生DML操作时，会记录到物化视图日志中，这时指定的时间4000年1月1日0时0分0秒。如果物化视图日志供多个物化视图使用，则一个物化视图刷新后会将它刷新的记录的时间更新为它刷新的时间。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 下面建立快速刷新的两个物化视图来演示时间列的变化。（只有建立快速刷新的物化视图才能使用物化视图日志，如果只建立一个物化视图，则物化视图刷新完会将物化视图日志清除掉。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; create materialized view mv_t_rowid refresh fast on commit as select name, count(*) from t_rowid group by name;&lt;br /&gt;实体化视图已创建。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; create materialized view mv_t_rowid1 refresh fast as select name, count(*) from t_rowid group by name;&lt;br /&gt;实体化视图已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_rowid values (1, 'a', 5);&lt;br /&gt;已创建 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_rowid set name = 'c' where id = 1;&lt;br /&gt;已更新 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; delete t_rowid;&lt;br /&gt;已删除 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select snaptime$$ from mlog$_t_rowid;&lt;br /&gt;SNAPTIME$$&lt;br /&gt;-------------------&lt;br /&gt;4000-01-01 00:00:00&lt;br /&gt;4000-01-01 00:00:00&lt;br /&gt;4000-01-01 00:00:00&lt;br /&gt;4000-01-01 00:00:00&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; commit;&lt;br /&gt;提交完成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select snaptime$$ from mlog$_t_rowid;&lt;br /&gt;SNAPTIME$$&lt;br /&gt;-------------------&lt;br /&gt;2012/5/23 15:41:41&lt;br /&gt;2012/5/23 15:41:41&lt;br /&gt;2012/5/23 15:41:41&lt;br /&gt;2012/5/23 15:41:41&lt;br /&gt;COMMIT后，物化视图mv_t_rowid刷新，将SNAPTIME$$列更新成自己的刷新时间。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、操作类型和新旧值&lt;/strong&gt;&lt;br /&gt;操作类型比较简单：只包括I(INSERT)、D(DELETE)和U(UPDATE)三种。&lt;br /&gt;新旧值也包括三种：O表示旧值（一般对应的操作时DELETE）、N表示新值（一般对应的操作是INSERT），还有一种U（对应UPDATE操作）。&lt;/p&gt;&lt;p&gt;SQL&amp;gt; insert into t_pk values (1, 'a', 5);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_pk values (2, 'b', 7);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_pk values (3, 'c', 9);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_pk set name = 'c' where id = 1;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_pk set id = 4 where id = 2;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; delete t_pk where id = 3;&lt;br /&gt;已删除 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select id, dmltype$$, old_new$$ from mlog$_t_pk;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID D O&lt;br /&gt;---------- - -&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 I N&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 I N&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 I N&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 U U&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 D O&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 I N&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 D O&lt;br /&gt;已选择7行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;开始是插入三条记录，接着是UPDATE操作。&lt;span style="color: #ff0000;"&gt;需要注意，对于基于主键的物化视图日志，如果更新了主键，则UPDATE操作转化为一条DELETE操作，一条INSERT操作。最后是DELETE操作。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;SQL&amp;gt; drop materialized view log on t_rowid;&lt;br /&gt;实体化视图日志已删除。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; create materialized view log on t_rowid with rowid, sequence (name, num) including new values;&lt;br /&gt;实体化视图日志已创建。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_rowid values (1, 'a', 5);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_rowid values (2, 'b', 7);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_rowid values (3, 'c', 9);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_rowid set name = 'c' where id = 1;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_rowid set id = 4 where id = 2;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; delete t_rowid where id = 3;&lt;br /&gt;已删除 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select name, num, m_row$$, dmltype$$, old_new$$ from mlog$_t_rowid;&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUM M_ROW$$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; D&amp;nbsp;&amp;nbsp; O&lt;br /&gt;---------- ---------- ------------------ - -&lt;br /&gt;a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 AAACIDAAFAAAAD4AAC I N&lt;br /&gt;b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7 AAACIDAAFAAAAD4AAA I N&lt;br /&gt;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9 AAACIDAAFAAAAD4AAB I N&lt;br /&gt;a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 AAACIDAAFAAAAD4AAC U U&lt;br /&gt;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 AAACIDAAFAAAAD4AAC U N&lt;br /&gt;b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7 AAACIDAAFAAAAD4AAA U U&lt;br /&gt;b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7 AAACIDAAFAAAAD4AAA U N&lt;br /&gt;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9 AAACIDAAFAAAAD4AAB D O&lt;/p&gt;&lt;p&gt;已选择8行。&lt;/p&gt;&lt;p&gt;查询结果和上面类似，唯一的区别是每条UPDATE操作都对应物化视图日志中的两条记录。&lt;span style="color: #ff0000;"&gt;一条对应UPDATE操作的原记录DMLTYPE$$和OLD_NEW$$都为U，一条对应UPDATE操作后的新记录，DMLTYPE$$为U，OLD_NEW$$为N。当建立物化视图日志时指出了INCLUDING NEW VALUES语句时，就会出现这种情况。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四、修改矢量&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最后简单讨论一下CHANGE_VECTOR$$列。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT和DELETE操作都是&lt;span style="color: #ff0000;"&gt;记录集&lt;/span&gt;的，即INSERT和DELETE会&lt;span style="color: #ff0000;"&gt;影响整条记录&lt;/span&gt;。而UPDATE操作是&lt;span style="color: #ff0000;"&gt;字段集&lt;/span&gt;的，UPDATE操作&lt;span style="color: #ff0000;"&gt;可能会更新整条记录的所有字段，也可能只更新个别字段。&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 无论从性能上考虑还是从数据的一致性上考虑，&lt;span style="color: #ff0000;"&gt;物化视图刷新时都应该是基于字段集&lt;/span&gt;。&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;Oracle就是通过CHANGE_VECTOR$$列来记录每条记录发生变化的字段包括哪些。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 基于主键、ROWID和OBJECT ID的物化视图日志在CHANGE_VECTOR$$上略有不同，但是总体设计的思路是一致的。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;CHANGE_VECTOR$$列是RAW类型，其实Oracle采用的方式就是用每个BIT位去映射一个列。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 比如：第一列被更新设置为02，即00000010。第二列设置为04，即00000100，第三列设置为08，即00001000。当第一列和第二列同时被更新，则设置为06，00000110。如果三列都被更新，设置为0E，00001110。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 依此类推，第4列被更新时为10，第5列20，第6列40，第7列80，第8列0001。当第1000列被更新时，CHANGE_VECTOR$$的长度为1000/4+2为252。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 除了可以表示UPDATE的字段，还可以表示INSERT和DELETE。DELETE操作CHANGE_VECTOR$$列为全0，具体个数由基表的列数决定。INSERT操作的最低位为FE如果基表列数较多，而存在高位的话，所有的高位都为FF。如果INSERT操作是前面讨论过的由UPDATE操作更新了主键造成的，则这个INSERT操作对应的CHANGE_VECTOR$$列为全FF。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; insert into t_rowid values (1, 'a', 5);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_rowid values (2, 'b', 7);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_rowid values (3, 'c', 9);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_rowid set name = 'c' where id = 1;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_rowid set id = 4 where id = 2;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_rowid set name = 'd', num = 11 where id = 3;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; delete t_rowid where id = 3;&lt;br /&gt;已删除 1 行。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SQL&amp;gt; select name, num, m_row$$, dmltype$$, old_new$$, change_vector$$ from mlog$_t_rowid;&lt;br /&gt;&amp;nbsp;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052316184092.png" alt="" /&gt;&lt;br /&gt;可以看到，正如上面分析的，INSERT为FE，DELETE为00，对第一列的更新为02，第二列为04，第二列和第三列都更新为0C。需要注意，正常情况下，第一列会从02开始，但是如果对MLOG$表执行了TRUNCATE操作，或者重建了物化视图日志，则可能造成第一列开始位置发生偏移。&lt;/p&gt;&lt;p&gt;SQL&amp;gt; insert into t_pk values (1, 'a', 5);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_pk values (2, 'b', 7);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t_pk values (3, 'c', 9);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_pk set name = 'c' where id = 1;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_pk set id = 4 where id = 2;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; delete t_pk where id = 1;&lt;br /&gt;已删除 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; commit&lt;br /&gt;提交完成。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select * from mlog$_t_pk;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052316213625.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;这个结果和ROWID类型基本一致，不同的是，如果更新了主键，会将UPDATE操作在物化视图日志中记录为一条DELETE和一条INSERT，不过这时INSERT对应的CHANGE_VECTOR$$的值是FF。&lt;/p&gt;&lt;p&gt;&amp;nbsp;SQL&amp;gt; insert into t_oid values (1, 'a', 5);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_oid set name = 'c' where id = 1;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t_oid set id = 5 where id = 1;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; delete t_oid;&lt;br /&gt;已删除 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; commit;&lt;br /&gt;提交完成。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select * from mlog$_t_oid;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052316303010.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;SQL&amp;gt; select name, segcollength from sys.col$ where obj# = (select object_id from user_objects where object_name ='T_OID');&lt;/p&gt;&lt;p&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SEGCOLLENGTH&lt;br /&gt;------------------------------ ------------&lt;br /&gt;SYS_NC_OID$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;br /&gt;SYS_NC_ROWINFO$&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;br /&gt;ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 22&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 30&lt;br /&gt;NUM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;22&lt;/p&gt;&lt;p&gt;这个结果也和ROWID类型基本一致，需要注意的是，由于对象表包含两个隐含列，因此ID不再是第一个字段，而是第三个，因此对应的值是08。&lt;/p&gt;&lt;p&gt;SQL&amp;gt; create table t (&lt;br /&gt;&amp;nbsp;&amp;nbsp; col1 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col2 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col3 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col4 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col5 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col6 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col7 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col8 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col9 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col10 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col11 number, &lt;br /&gt;&amp;nbsp;&amp;nbsp; col12 number &lt;br /&gt;);&lt;br /&gt;表已创建。&lt;/p&gt;&lt;p&gt;SQL&amp;gt; create materialized view log on t with rowid;&lt;br /&gt;实体化视图日志已创建。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t values (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);&lt;br /&gt;已创建 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t set col1 = 10;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t set col11 = 110;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; update t set col5 = 50, col12 = 120;&lt;br /&gt;已更新 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; delete t;&lt;br /&gt;已删除 1 行。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; commit;&lt;br /&gt;提交完成。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select * from mlog$_t;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052316362156.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;最后看一个包含列数较多的例子，唯一需要注意的是，低位在左，高位在右。&lt;/p&gt;&lt;p&gt;-----------------------------------------------------------------------------------&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Blog：&lt;a href="http://www.cnblogs.com/linjiqin/"&gt;http://www.cnblogs.com/linjiqin/&lt;/a&gt;&lt;br /&gt;J2EE、Android、Linux、Oracle QQ交流群：142463980、158560018(满)&lt;/p&gt;&lt;p&gt;题外话：&lt;br /&gt;本人来自铁观音的发源地&amp;mdash;&amp;mdash;泉州安溪，正宗安溪铁观音，有需要的友友欢迎加我Q:416501600。&lt;br /&gt;茶叶淘宝店：&lt;a href="http://shop61968332.taobao.com/"&gt;http://shop61968332.taobao.com/&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;img src="http://www.cnblogs.com/linjiqin/aggbug/2514795.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linjiqin/archive/2012/05/23/2514795.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linjiqin/archive/2012/05/22/2513551.html</id><title type="text">Oracle如何根据物化视图日志快速刷新物化视图</title><summary type="text">Oracle物化视图的快速刷新机制是通过物化视图日志完成的。Oracle如何通过一个物化视图日志就可以支持多个物化视图的快速刷新呢，本文简单的描述一下刷新的原理。首先，看一下物化视图的结构：SQL&gt; create table t(id number, name varchar2(30), num number);表已创建。 SQL&gt; create materialized view log on t with rowid, sequence(id, name) including new values;实体化视图日志已创建。 SQL&gt; desc mlog$_tID和NAME是</summary><published>2012-05-22T08:51:00Z</published><updated>2012-05-22T08:51:00Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linjiqin/archive/2012/05/22/2513551.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/archive/2012/05/22/2513551.html"/><content type="html">&lt;p&gt;Oracle物化视图的快速刷新机制是通过物化视图日志完成的。Oracle如何通过一个物化视图日志就可以支持多个物化视图的快速刷新呢，本文简单的描述一下刷新的原理。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;首先，看一下物化视图的结构：&lt;br /&gt;SQL&amp;gt; create table t(id number, name varchar2(30), num number);&lt;br /&gt;表已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; create materialized view log on t with rowid, sequence(id, name) including new values;&lt;br /&gt;实体化视图日志已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; desc mlog$_&lt;span style="color: #ff0000;"&gt;t&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052216485237.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;ID和NAME是建立物化视图日志时指定的基表中的列，它们记录每次DML操作对应的ID和NAME的值。&lt;br /&gt;M_ROW$$保存基表的ROWID信息，根据M_ROW$$中的信息可以定位到发生DML操作的记录。&lt;br /&gt;SEQUENCE$$根据DML操作发生的顺序记录序列的编号，当刷新时，根据SEQUENCE$$中的顺序就可以和基表中的执行顺序保持一致。&lt;br /&gt;SNAPTIME$$列记录了刷新操作的时间。&lt;br /&gt;DMLTYPE$$的记录值I、U和D，表示操作是INSERT、UPDATE还是DELETE。&lt;br /&gt;OLD_NEW$$表示物化视图日志中保存的信息是DML操作之前的值（旧值）还是DML操作之后的值（新值）。除了O和N这两种类型外，对于UPDATE操作，还可能表示为U。&lt;br /&gt;CHANGE_VECTOR$$记录DML操作发生在那个或那几个字段上。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;有关物化视图日志结构的详细描述，可以参考文档：物化视图日志结构：&lt;a href="http://blog.itpub.net/post/468/20498"&gt;http://blog.itpub.net/post/468/20498&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;根据上面的描述，可以发现，当刷新物化视图时，只需要根据SEQUENCE$$列给出的顺序，通过M_ROW$$定位到基表的记录，如果是UPDATE操作，通过CHANGE_VECTOR$$定位到字段，然后根据基表中的数据重复执行DML操作。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;如果物化视图日志只针对一个物化视图，那么刷新过程就是这么简单，还需要做的不过是在刷新之后将物化视图日志清除掉。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;但是，Oracle的物化视图日志是可以同时支持多个物化视图的快速刷新的，也就是说，物化视图在刷新时还必须判断哪些物化视图日志记录是当前物化视图刷新需要的，哪些是不需要的。而且，物化视图还必须确定，在刷新物化视图后，物化视图日志中哪些记录是需要清除的，哪些是不需要清除的。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;回顾一下物化视图日志的结构，发现只剩下一个SHAPTIME$$列，那么Oracle如何仅通过这一列就完成了对多个物化视图的支持呢？下面建立一个小例子，通过例子来进行说明。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;使用上文中建立的表和物化视图日志，下面对这个表建立三个快速刷新的物化视图。&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;SQL&amp;gt; create materialized view mv_t_id refresh fast as select id, count(*) from t group by id;&lt;br /&gt;实体化视图已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; create materialized view mv_t_name refresh fast as select name, count(*) from t group by name;&lt;br /&gt;实体化视图已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; create materialized view mv_t_id_name refresh fast as select id, name, count(*) from t group by id, name;&lt;br /&gt;实体化视图已创建。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; insert into t values (1, 'a', 2);&lt;br /&gt;已创建 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; insert into t values (1, 'b', 3);&lt;br /&gt;已创建 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; insert into t values (2, 'a', 5);&lt;br /&gt;已创建 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; insert into t values (3, 'b', 7);&lt;br /&gt;已创建 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; update t set name = 'c' where id = 3;&lt;br /&gt;已更新 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; delete t where id = 2;&lt;br /&gt;已删除 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; commit;&lt;br /&gt;提交完成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; select id, name, m_row$$, snaptime$$, dmltype$$ from mlog$_t;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217313917.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;当发生了DML操作后，物化视图日志中的SNAPTIME$$列保持的值是4000-01-01 00:00:00。这个值表示这条记录还没有被任何物化视图刷新过。第一个刷新这些记录的物化视图会将SNAPTIME$$的值更新为物化视图当前的刷新时间。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; exec dbms_mview.refresh('MV_T_ID');&lt;br /&gt;PL/SQL 过程已成功完成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; select id, name, m_row$$, snaptime$$, dmltype$$ from mlog$_t;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217334489.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;Oracle根据数据字典中的信息可以知道表T上建立了三个物化视图，因此，MV_T_ID刷新完之后，不会删除物化视图记录。&lt;/p&gt;&lt;p&gt;Oracle的数据字典中还保存着每个物化视图上次刷新的时间和当前的刷新状态。&lt;/p&gt;&lt;p&gt;SQL&amp;gt; select name, last_refresh from user_mview_refresh_times;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217371375.png" alt="" /&gt;&lt;br /&gt;SQL&amp;gt; select mview_name, last_refresh_date, staleness from user_mviews;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217372932.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;这些视图中记录了每个物化视图上次执行刷新操作的时间，并且给出每个物化视图中的数据是否是和基表同步的。由于MV_T_ID刚刚进行了刷新，因此状态是FRESH，而另外两个由于在刷新（建立）之后，基表又进行了DML操作，因此状态为NEEDS_COMPILE。如果这时对基表进行DML操作，则MV_T_ID的状态也会变为NEEDS_COMPILE。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; insert into t values (4, 'd', 10);&lt;br /&gt;已创建 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; commit;&lt;br /&gt;提交完成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; select id, name, m_row$$, snaptime$$, dmltype$$ from mlog$_t;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217403353.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;SQL&amp;gt; select mview_name, last_refresh_date, staleness from user_mviews;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217414985.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;下面刷新物化视图MV_T_ID_NAME，刷新操作的判断依据是，只刷新SNAPTIME$$列大于当前物化视图的LAST_REFRESH_DATE的记录，由于物化视图日志中所有记录的SNAPTIME$$的值都比物化视图MV_T_ID_NAME上次刷新的时间点大，因此会刷新所有记录。对于SNAPTIME$$列的值是4000-01-01 00:00:00的记录，物化视图会把SNAPTIME$$列的值更新为当前刷新时间，对于那些已经被更新过的SNAPTIME$$列，则保持原值。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; exec dbms_mview.refresh('MV_T_ID_NAME')&lt;br /&gt;PL/SQL 过程已成功完成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; select id, name, m_row$$, snaptime$$, dmltype$$ from mlog$_t;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217431536.png" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;SQL&amp;gt; select mview_name, last_refresh_date, staleness from user_mviews;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217461720.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;如果这时再次刷新物化视图MV_T_ID，则只有ID=4的这条记录的SNAPTIME$$的时间点大于MV_T_ID上次刷新的时间点，因此，只刷新这一条记录，且不会改变SNAPTIME$$的值。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; exec dbms_mview.refresh('MV_T_ID')&lt;br /&gt;PL/SQL 过程已成功完成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select id, name, m_row$$, snaptime$$, dmltype$$ from mlog$_t;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217481592.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;SQL&amp;gt; select mview_name, last_refresh_date, staleness from user_mviews;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217495293.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;到目前为止，还没有看到过物化视图日志的清除，其实每次进行完刷新，物化视图日志都会试图删除没有用的物化视图日志记录。物化视图日志记录的删除条件是删除那些SNAPTIME$$列小于等于基表所有物化视图的上次刷新时间。在上面的例子中，由于MV_T_NAME一直没有刷新，因此它的LAST_REFRESH_DATE比物化视图日志中所有记录的值都小，因此，一直没有发生物化视图日志记录清除的现象。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; insert into t values (5, 'e', 2);&lt;br /&gt;已创建 1 行。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; commit;&lt;br /&gt;提交完成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; exec dbms_mview.refresh('MV_T_NAME')&lt;br /&gt;PL/SQL 过程已成功完成。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select id, name, m_row$$, snaptime$$, dmltype$$ from mlog$_t;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217513821.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;SQL&amp;gt; select mview_name, last_refresh_date, staleness from user_mviews;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012052217523614.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;物化视图MV_T_NAME刷新了物化视图中的每条记录，更新了ID=5的记录的SNAPTIME$$时间，并清除了其它所有物化视图日志记录。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;SQL&amp;gt; drop materialized view log on t;&lt;br /&gt;实体化视图日志已删除。&lt;/p&gt;&lt;p&gt;SQL&amp;gt; drop materialized view mv_t_id;&lt;br /&gt;实体化视图已删除。&lt;/p&gt;&lt;p&gt;SQL&amp;gt; drop materialized view mv_t_name;&lt;br /&gt;实体化视图已删除。&lt;/p&gt;&lt;p&gt;SQL&amp;gt; drop materialized view mv_t_id_name;&lt;br /&gt;实体化视图已删除。&lt;/p&gt;&lt;p&gt;SQL&amp;gt; drop table t;&lt;br /&gt;表已删除。&lt;/p&gt;&lt;p&gt;SQL&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;最后，简单总结一下：&lt;br /&gt;物化视图在刷新时，会刷新所有SNAPTIME$$大于物化视图上次刷新时间的记录，并将所有是4000-01-01 00:00:00的记录更新为当前刷新时间。对于其他大于上次刷新时间的记录，只刷新不更改。这样，当刷新执行完以后，数据字典中记录当前物化视图的上次刷新时间为当前时刻，这保证了物化视图日志中目前所有的记录都小于或等于刷新时间。因此，每个物化视图只要刷新大于上次刷新时间的记录，且保证每次刷新后，所有记录的时间都小于等于上次刷新时间，那么无论有多少个物化视图，就可以互不影响的使用同一个物化视图日志进行快速刷新了。当物化视图刷新完之后，会清除那些SNAPTIME$$列小于所有物化视图的上次刷新时间的记录，而这些记录已经被所有的物化视图都刷新过了，保存在物化视图日志中已经没有意义了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;-----------------------------------------------------------------------------------&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Blog：&lt;a href="http://www.cnblogs.com/linjiqin/"&gt;http://www.cnblogs.com/linjiqin/&lt;/a&gt;&lt;br /&gt;J2EE、Android、Linux、Oracle QQ交流群：142463980、158560018(满)&lt;/p&gt;&lt;p&gt;题外话：&lt;br /&gt;本人来自铁观音的发源地&amp;mdash;&amp;mdash;泉州安溪，正宗安溪铁观音，有需要的友友欢迎加我Q:416501600。&lt;br /&gt;茶叶淘宝店：&lt;a href="http://shop61968332.taobao.com/"&gt;http://shop61968332.taobao.com/&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;img src="http://www.cnblogs.com/linjiqin/aggbug/2513551.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linjiqin/archive/2012/05/22/2513551.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linjiqin/archive/2012/05/21/2511677.html</id><title type="text">Oracle物化视图语法</title><summary type="text">一、Oracle物化视图语法create materialized view [view_name]refresh [fast|complete|force][on [commit|demand] | start with (start_time) next (next_time)]as{创建物化视图用的查询语句} 以上是Oracle创建物化视图（Materialized View, 以下简称MV）时常用的语法,各参数的含义如下:1、refresh [fast|complete|force] 视图刷新的方式:fast: 增量刷新.假设前一次刷新的时间为t1,那么使用fast模式刷新物化视图时,</summary><published>2012-05-21T07:29:00Z</published><updated>2012-05-21T07:29:00Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linjiqin/archive/2012/05/21/2511677.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/archive/2012/05/21/2511677.html"/><content type="html">&lt;p&gt;&lt;strong&gt;一、Oracle物化视图语法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;create materialized view [view_name]&lt;br /&gt;refresh [fast|complete|force]&lt;br /&gt;[&lt;br /&gt;on [commit|demand] | start with (start_time) next (next_time)&lt;br /&gt;]&lt;br /&gt;as&lt;br /&gt;{创建物化视图用的查询语句}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;以上是Oracle创建物化视图（Materialized View, 以下简称MV）时常用的语法,各参数的含义如下:&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: #ffffff; color: #ff0000;"&gt;1、refresh [fast|complete|force] 视图刷新的方式:&lt;/span&gt;&lt;br /&gt;fast: 增量刷新.假设前一次刷新的时间为t1,那么使用fast模式刷新物化视图时,只向视图中添加t1到当前时间段内主表变化过的数据.为了记录这种变化，建立增量刷新物化视图还需要一个物化视图日志表。create materialized view log on 主表名。&lt;br /&gt;complete: 全部刷新。相当于重新执行一次创建视图的查询语句。&lt;br /&gt;force: 这是默认的数据刷新方式。当可以使用fast模式时，数据刷新将采用fast方式；否则使用complete方式。&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;2、MV数据刷新的时间：&lt;/span&gt;&lt;br /&gt;on demand:在用户需要刷新的时候刷新，这里就要求用户自己动手去刷新数据了（也可以使用job定时刷新）&lt;br /&gt;on commit:当主表中有数据提交的时候，立即刷新MV中的数据；&lt;br /&gt;start &amp;hellip;&amp;hellip;：从指定的时间开始，每隔一段时间（由next指定）就刷新一次；&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;Oracle的物化视图提供了强大的功能，可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果，这样，在执行查询时，就可以避免进行这些耗时的操作，而从快速的得到结果。&lt;/span&gt;物化视图有很多方面和索引很相似：&lt;span style="color: #ff0000;"&gt;使用物化视图的目的是为了提高查询性能&lt;/span&gt;；物化视图对应用透明，增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性；物化视图需要占用存储空间；当基表发生变化时，物化视图也应当刷新。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;物化视图可以分为以下三种类型：包含聚集的物化视图；只包含连接的物化视图；嵌套物化视图。&lt;/span&gt;三种物化视图的快速刷新的限制条件有很大区别，而对于其他方面则区别不大。创建物化视图时可以指定多种选项，下面对几种主要的选择进行简单说明：&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;1、创建方式（Build Methods）：&lt;/span&gt;包括BUILD IMMEDIATE(立即)和BUILD DEFERRED(延迟)两种。BUILD IMMEDIATE是在创建物化视图的时候就生成数据，而BUILD DEFERRED则在创建时不生成数据，以后根据需要在生成数据。默认为BUILD IMMEDIATE。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;2、查询重写（Query Rewrite）：&lt;/span&gt;包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的物化视图是否支持查询重写。&lt;span style="color: #ff0000;"&gt;查询重写是指当对物化视图的基表进行查询时，Oracle会自动判断能否通过查询物化视图来得到结果，&lt;/span&gt;如果可以，则避免了聚集或连接操作，而直接从已经计算好的物化视图中读取数据。默认为DISABLE QUERY REWRITE。&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;3、刷新（Refresh）：&lt;/span&gt;指当基表发生了DML操作后，物化视图何时采用哪种方式和基表进行同步。刷新的模式有两种：ON DEMAND和ON COMMIT。ON DEMAND指物化视图在用户需要的时候进行刷新，可以手工通过&lt;span style="color: #ff0000;"&gt;DBMS_MVIEW.REFRESH&lt;/span&gt;等方法来进行刷新，也可以通过JOB定时进行刷新。ON COMMIT指出物化视图在对基表的DML操作提交的同时进行刷新。刷新的方法有四种：FAST、COMPLETE、FORCE和NEVER。FAST刷新采用增量刷新，只刷新自上次刷新以后进行的修改。COMPLETE刷新对整个物化视图进行完全的刷新。如果选择FORCE方式，则Oracle在刷新时会去判断是否可以进行快速刷新，如果可以则采用FAST方式，否则采用COMPLETE的方式。NEVER指物化视图不进行任何刷新。默认值是FORCE ON DEMAND。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;在建立物化视图的时候可以指定ORDER BY语句，使生成的数据按照一定的顺序进行保存。不过这个语句不会写入物化视图的定义中，而且对以后的刷新也无效。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;4、物化视图日志：&lt;/span&gt;如果需要进行快速刷新，则需要建立物化视图日志。物化视图日志根据不同物化视图的快速刷新的需要，可以建立为ROWID或PRIMARY KEY类型的。还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;可以指明ON PREBUILD TABLE语句将物化视图建立在一个已经存在的表上。&lt;/span&gt;这种情况下，物化视图和表必须同名。当删除物化视图时，不会删除同名的表。&lt;span style="color: #ff0000;"&gt;这种物化视图的查询重写要求参数QUERY_REWRITE_INTEGERITY必须设置为trusted或者stale_tolerated。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;物化视图可以进行分区。而且基于分区的物化视图可以支持分区变化跟踪（PCT）。具有这种特性的物化视图，当基表进行了分区维护操作后，仍然可以进行快速刷新操作。对于聚集物化视图，可以在GROUP BY列表中使用CUBE或ROLLUP，来建立不同等级的聚集物化视图。 &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;-----------------------------------------------------------------------------------&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;Blog：&lt;a href="http://www.cnblogs.com/linjiqin/"&gt;http://www.cnblogs.com/linjiqin/&lt;/a&gt;&lt;br /&gt;J2EE、Android、Linux、Oracle QQ交流群：142463980、158560018(满)&lt;/p&gt;&lt;p&gt;题外话：&lt;br /&gt;本人来自铁观音的发源地&amp;mdash;&amp;mdash;泉州安溪，正宗安溪铁观音，有需要的友友欢迎加我Q:416501600。&lt;br /&gt;茶叶淘宝店：&lt;a href="http://shop61968332.taobao.com/"&gt;http://shop61968332.taobao.com/&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/linjiqin/aggbug/2511677.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linjiqin/archive/2012/05/21/2511677.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linjiqin/archive/2012/05/07/2488880.html</id><title type="text">Java使用SOAP获取webservice实例解析</title><summary type="text">1.webservice提供方：http://www.webxml.com.cn/zh_cn/index.aspx2.下面我们以“获得腾讯QQ在线状态”为例。参数截图如下图：SOAP 1.1以下是 SOAP 1.2 请求和响应示例。所显示的占位符需替换为实际值。[http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?op=qqCheckOnline] 点击前面的网址，查看对应参数信息。 3.Java程序package junit;import java.io.BufferedReader;import java.io.Buff</summary><published>2012-05-07T13:19:00Z</published><updated>2012-05-07T13:19:00Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linjiqin/archive/2012/05/07/2488880.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/archive/2012/05/07/2488880.html"/><content type="html">&lt;p&gt;1.webservice提供方：&lt;a href="http://www.webxml.com.cn/zh_cn/index.aspx"&gt;http://www.webxml.com.cn/zh_cn/index.aspx&lt;/a&gt;&lt;br /&gt;2.下面我们以&amp;ldquo;获得腾讯QQ在线状态&amp;rdquo;为例。&lt;br /&gt;参数截图如下图：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;SOAP 1.1&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;以下是 SOAP 1.2 请求和响应示例。所显示的&lt;span class="value"&gt;占位符&lt;/span&gt;需替换为实际值。&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012050721163397.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;[http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?op=qqCheckOnline] 点击前面的网址，查看对应参数信息。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;3.Java程序&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;package&lt;/span&gt;&lt;span style="color: #000000;"&gt; junit;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.BufferedReader;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.BufferedWriter;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.ByteArrayOutputStream;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.File;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.FileInputStream;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.FileOutputStream;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.IOException;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.InputStream;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.InputStreamReader;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.OutputStream;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.OutputStreamWriter;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.PrintWriter;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.io.UnsupportedEncodingException;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.net.HttpURLConnection;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; java.net.URL;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; org.junit.Test;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; JxSendSmsTest {&lt;br/&gt;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;/**&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;     * 获得腾讯QQ在线状态&lt;br/&gt;     *&lt;br/&gt;     * 输入参数：QQ号码 String，默认QQ号码：8698053。返回数据：String，Y = 在线；N = 离线；E = QQ号码错误；A = 商业用户验证失败；V = 免费用户超过数量&lt;br/&gt;     * &lt;/span&gt;&lt;span style="color: #808080;"&gt;@throws&lt;/span&gt;&lt;span style="color: #008000;"&gt; Exception&lt;br/&gt;     &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br/&gt;    @Test&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; sendSms() &lt;span style="color: #0000ff;"&gt;throws&lt;/span&gt;&lt;span style="color: #000000;"&gt; Exception {&lt;br/&gt;        String qqCode &lt;/span&gt;= "416501600";&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;qq号码&lt;/span&gt;&lt;br/&gt;        String urlString = "http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx"&lt;span style="color: #000000;"&gt;;&lt;br/&gt;        String xml &lt;/span&gt;= JxSendSmsTest.&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;.getClassLoader().getResource("SendInstantSms.xml"&lt;span style="color: #000000;"&gt;).getFile();&lt;br/&gt;        String xmlFile&lt;/span&gt;=replace(xml, "qqCodeTmp"&lt;span style="color: #000000;"&gt;, qqCode).getPath();&lt;br/&gt;        String soapActionString &lt;/span&gt;= "http://WebXml.com.cn/qqCheckOnline"&lt;span style="color: #000000;"&gt;;&lt;br/&gt;        URL url &lt;/span&gt;= &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; URL(urlString);&lt;br/&gt;        HttpURLConnection httpConn &lt;/span&gt;=&lt;span style="color: #000000;"&gt; (HttpURLConnection) url.openConnection();&lt;br/&gt;        File fileToSend &lt;/span&gt;= &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; File(xmlFile);&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] buf = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[(&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt;) fileToSend.length()];&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; FileInputStream(xmlFile).read(buf);&lt;br/&gt;        httpConn.setRequestProperty(&lt;/span&gt;"Content-Length"&lt;span style="color: #000000;"&gt;, String.valueOf(buf.length));&lt;br/&gt;        httpConn.setRequestProperty(&lt;/span&gt;"Content-Type", "text/xml; charset=utf-8"&lt;span style="color: #000000;"&gt;);&lt;br/&gt;        httpConn.setRequestProperty(&lt;/span&gt;"soapActionString"&lt;span style="color: #000000;"&gt;, soapActionString);&lt;br/&gt;        httpConn.setRequestMethod(&lt;/span&gt;"POST"&lt;span style="color: #000000;"&gt;);&lt;br/&gt;        httpConn.setDoOutput(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br/&gt;        httpConn.setDoInput(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br/&gt;        OutputStream out &lt;/span&gt;=&lt;span style="color: #000000;"&gt; httpConn.getOutputStream();&lt;br/&gt;        out.write(buf);&lt;br/&gt;        out.close();&lt;br/&gt;&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] datas=&lt;span style="color: #000000;"&gt;readInputStream(httpConn.getInputStream());&lt;br/&gt;        String result&lt;/span&gt;=&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; String(datas);&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;打印返回结果&lt;/span&gt;&lt;br/&gt;        System.out.println("result:" +&lt;span style="color: #000000;"&gt; result);&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;/**&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;     * 文件内容替换&lt;br/&gt;     * &lt;br/&gt;     * &lt;/span&gt;&lt;span style="color: #808080;"&gt;@param&lt;/span&gt;&lt;span style="color: #008000;"&gt; inFileName 源文件&lt;br/&gt;     * &lt;/span&gt;&lt;span style="color: #808080;"&gt;@param&lt;/span&gt;&lt;span style="color: #008000;"&gt; from&lt;br/&gt;     * &lt;/span&gt;&lt;span style="color: #808080;"&gt;@param&lt;/span&gt;&lt;span style="color: #008000;"&gt; to&lt;br/&gt;     * &lt;/span&gt;&lt;span style="color: #808080;"&gt;@return&lt;/span&gt;&lt;span style="color: #008000;"&gt; 返回替换后文件&lt;br/&gt;     * &lt;/span&gt;&lt;span style="color: #808080;"&gt;@throws&lt;/span&gt;&lt;span style="color: #008000;"&gt; IOException&lt;br/&gt;     * &lt;/span&gt;&lt;span style="color: #808080;"&gt;@throws&lt;/span&gt;&lt;span style="color: #008000;"&gt; UnsupportedEncodingException&lt;br/&gt;     &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; File replace(String inFileName, String from, String to)&lt;br/&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;throws&lt;/span&gt;&lt;span style="color: #000000;"&gt; IOException, UnsupportedEncodingException {&lt;br/&gt;        File inFile &lt;/span&gt;= &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; File(inFileName);&lt;br/&gt;        BufferedReader in &lt;/span&gt;= &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; BufferedReader(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; InputStreamReader(&lt;br/&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; FileInputStream(inFile), "utf-8"&lt;span style="color: #000000;"&gt;));&lt;br/&gt;        File outFile &lt;/span&gt;= &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; File(inFile + ".tmp"&lt;span style="color: #000000;"&gt;);&lt;br/&gt;        PrintWriter out &lt;/span&gt;= &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; PrintWriter(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; BufferedWriter(&lt;br/&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; OutputStreamWriter(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; FileOutputStream(outFile), "utf-8"&lt;span style="color: #000000;"&gt;)));&lt;br/&gt;        String reading;&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt; ((reading = in.readLine()) != &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {&lt;br/&gt;            out.println(reading.replaceAll(from, to));&lt;br/&gt;        }&lt;br/&gt;        out.close();&lt;br/&gt;        in.close();&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;infile.delete(); &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;删除源文件&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;outfile.renameTo(infile); &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;对临时文件重命名&lt;/span&gt;&lt;br/&gt;        &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; outFile;&lt;br/&gt;    }&lt;br/&gt;    &lt;br/&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;/**&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;     * 从输入流中读取数据&lt;br/&gt;     * &lt;/span&gt;&lt;span style="color: #808080;"&gt;@param&lt;/span&gt;&lt;span style="color: #008000;"&gt; inStream&lt;br/&gt;     * &lt;/span&gt;&lt;span style="color: #808080;"&gt;@return&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br/&gt;     * &lt;/span&gt;&lt;span style="color: #808080;"&gt;@throws&lt;/span&gt;&lt;span style="color: #008000;"&gt; Exception&lt;br/&gt;     &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] readInputStream(InputStream inStream) &lt;span style="color: #0000ff;"&gt;throws&lt;/span&gt;&lt;span style="color: #000000;"&gt; Exception{&lt;br/&gt;        ByteArrayOutputStream outStream &lt;/span&gt;= &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; ByteArrayOutputStream();&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] buffer = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[1024&lt;span style="color: #000000;"&gt;];&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; len = 0&lt;span style="color: #000000;"&gt;;&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt;( (len = inStream.read(buffer)) !=-1&lt;span style="color: #000000;"&gt; ){&lt;br/&gt;            outStream.write(buffer, &lt;/span&gt;0&lt;span style="color: #000000;"&gt;, len);&lt;br/&gt;        }&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] data = outStream.toByteArray();&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;网页的二进制数据&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #000000;"&gt;        outStream.close();&lt;br/&gt;        inStream.close();&lt;br/&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; data;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;}&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;4、SendInstantSms.xml文件如下，放在src目录下&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;xml version="1.0" encoding="utf-8"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;?&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;soap:Envelope &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; xmlns:xsd&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://www.w3.org/2001/XMLSchema"&lt;/span&gt;&lt;span style="color: #ff0000;"&gt; xmlns:soap&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://schemas.xmlsoap.org/soap/envelope/"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;soap:Body&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;qqCheckOnline &lt;/span&gt;&lt;span style="color: #ff0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://WebXml.com.cn/"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;      &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;qqCode&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;qqCodeTmp&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;qqCode&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;qqCheckOnline&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;soap:Body&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;soap:Envelope&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;---------------------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;Blog：&lt;a href="http://www.cnblogs.com/linjiqin/"&gt;http://www.cnblogs.com/linjiqin/&lt;/a&gt;&lt;br /&gt;J2EE、Android、Linux、Oracle QQ交流群：142463980、158560018(满)&lt;/p&gt;&lt;p&gt;题外话：&lt;br /&gt;本人来自铁观音的发源地&amp;mdash;&amp;mdash;泉州安溪，正宗安溪铁观音，有需要的友友欢迎加我Q:416501600。&lt;br /&gt;茶叶淘宝店：&lt;a href="http://shop61968332.taobao.com/"&gt;http://shop61968332.taobao.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/linjiqin/aggbug/2488880.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linjiqin/archive/2012/05/07/2488880.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linjiqin/archive/2012/04/25/2469255.html</id><title type="text">常用的PL/SQL开发原则</title><summary type="text">（1）广泛使用绑定变量，特别是批量绑定，因为这可以有效的避免sql的硬解析和PL/SQL引擎和SQL引擎的上下文切换！（2）广泛使用UROWID来处理DML语句(UROWID是ROWID扩展，ORACLE推荐使用UROWID来替代ROWID)（3）在你的存储过程中谨慎使用DDL语句(create、alter、drop、truncate等)，因为这可能会破坏你的transaction的连续性，更为严重的是可能会阻塞DML操作并可能会导致大量library cache latch争用并且有可能会导致某些sql执行计划的改变。（4）不要在存储过程里不应该commit的地方commit，特别是当你的存</summary><published>2012-04-25T01:24:00Z</published><updated>2012-04-25T01:24:00Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linjiqin/archive/2012/04/25/2469255.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/archive/2012/04/25/2469255.html"/><content type="html">&lt;p&gt;（1）广泛使用绑定变量，特别是批量绑定，因为这可以有效的避免sql的硬解析和PL/SQL引擎和SQL引擎的上下文切换！&lt;br /&gt;（2）广泛使用UROWID来处理DML语句(UROWID是ROWID扩展，ORACLE推荐使用UROWID来替代ROWID)&lt;br /&gt;（3）在你的存储过程中谨慎使用DDL语句(create、alter、drop、truncate等)，因为这可能会破坏你的transaction的连续性，更为严重的是可能会阻塞DML操作并可能会导致大量library cache latch争用并且有可能会导致某些sql执行计划的改变。&lt;br /&gt;（4）不要在存储过程里不应该commit的地方commit，特别是当你的存储过程会被另外一个存储过程调用的时候，你考虑到了你这么做会破坏调用你的父存储过程的transaction的连续性了吗？&lt;br /&gt;（5）注意你面对的数据量，小数据量的处理方法和海量数据的处理方法是不一样的！&lt;br /&gt;（6）循环的时候要注意清空临时变量的值&lt;br /&gt;（7）注意&amp;ldquo;select into 变量&amp;rdquo;的问题，使用子begin语句封装&amp;ldquo;select into 变量&amp;rdquo;以避免可能会出现的错误，这样就可以避免要在&amp;ldquo;select into 变量&amp;rdquo;之前先执行一下select count(*)&lt;br /&gt;（8）不要让oracle执行你的PL/SQL代码时产生隐式转换&lt;br /&gt;（9）在PL/SQL中定义varchar2变量的时候当你在不知道你所定义的变量的长度的时候可以将其定义为varchar2(4000)，这一点都不浪费！&lt;br /&gt;（10）如果你写的一组存储过程有逻辑上的关联，那我建议你要把这些存储过程封装到一个package里面&lt;br /&gt;（11）改正你的PL/SQL代码里的所有编译时编译器提示出的warning&lt;br /&gt;（12）循环的时候一定要注意exit，否则就太可怕了！&lt;br /&gt;（13）处理显式cursor的时候一定要注意fetch和exit，否则就太可怕了！如下是我处理的一个真实的案例，这个案例中暴露出的问题就很好的说明了处理cursor的时候一定要注意fetch和exit：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 今天下午1点多的时候接到同事的一封信，信里提到我们的一个10gR2的开发环境连不进去了，报这样的错&amp;ldquo;ORA-00257：archiver error.Connect internalonly,until freed.&amp;rdquo;。很明显是因为归档进行不下去而导致整个系统被hang住了。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我上去一看，果然是存放归档日志的目录满了。上述开发环境的存放归档日志的目录大小为10个G，alert log显示从今天11点半开始到下午1点左右的这段时间系统整整产生了10个G的归档日志，而且还在源源不断的继续产生。在继续产生归档日志的时候因为空间满了，所以导致整个系统被hang住。原因知道了，处理过程就很清晰了。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;只保留一个归档日志，然后手工把所有其他的归档日志rm掉，注意这里不要一下子就把所有的归档日志给rm掉，否则可能导致文件系统的句柄无法释放，进而这些归档日志占用的空间也无法释放。然后run一个ADDM报告，看一下是什么导致了在这么短的时间内产生了这么多的归档日志。从ADDM报告中可以很清晰的看到产生这么多归档日志的根本原因是因为一个存储过程里的几条sql在短时间内执行了1400多万次的缘故。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 用alter system kill session配合kill -9杀掉这个存储过程所在的session，以阻止它源源不断的产生归档日志。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 接着我分析了一下上述存储过程，发现根本原因在于在这个存储过程里打开了一个cursor，fetch这个cursor中的一条记录到一个record里，然后开启一个循环，在循环里run上述的那几条sql语句。但致命的是在循环的末尾并没有再fetch这个cursor中的另外一条记录，这就导致了上述循环的条件永远为真，所以上述sql如果不被我中断的话就会永远执行下去。这也就解释了为什么会在短时间里产生了大量的归档日志，并且undo tablespace的空间也被消耗殆尽。后续处理过程这里省略&amp;hellip;&amp;hellip;&lt;/p&gt;&lt;p&gt;（14）bulk collect into的时候不要一次collect太多的数据，建议一次collect的数据量在10000条以内，你可以用批量绑定自带的limit子句来限制或者使用rownum来限制&lt;br /&gt;（15）如果你使用了批量绑定，那为什么要把时间浪费在写诸如insertinto tablename(column1,column2,&amp;hellip;&amp;hellip;,column100) values(value1(i),value2(i),&amp;hellip;&amp;hellip;,value100(i))这样的sql语句上面？如果有可能，就写一个你自己的存储过程代码生成器吧，让它来帮你生成这样的语句。你应该把精力集中在更有用的方面！&lt;br /&gt;（16）你希望你的代码被并发执行吗？如果你不希望或者你的代码根本就不能够被并发执行，那就想一个办法控制并发吧！在应用层面控制就好，比如在update之前先尝试对该记录加for update nowait的锁，或者利用DML语句当前读的特性来避免并发都是不错的主意&lt;br /&gt;（17）不要写诸如insert into tablename1 select* from tablename2这样的语句，你考虑到扩展性了吗？假如以后tablename1或者tablename2增加或减少字段了呢？&lt;br /&gt;（18）谨慎使用hint，除非你很清楚你在做什么。比如说这里你强制oracle使用了某个索引，假如以后这个索引的名字被改了，由此带来的执行计划的变更你怎么办？你考虑到这种情况了吗？&lt;br /&gt;（19）注意关联更新丢失数据的问题，update语句如果没有指定where条件那就是对所有的数据做update操作，这个就太恐怖了！&lt;br /&gt;（20）用好临时表，有时候临时表很有用！特别是在根据一堆复杂条件去更新海量数据的时候&lt;br /&gt;（21）尽量避免在存储过程里使用递规！不是说不能用递规（递规在某些特定的情况下很有用），而是说在用递规的时候一定要避免无限递规的情况！&lt;br /&gt;（22）写好你的PL/SQL代码里的注释，这个很重要！不写注释并不代表你很厉害！&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;--------------------------------------------------------------------------&lt;br /&gt;Blog：&lt;a href="http://www.cnblogs.com/linjiqin/"&gt;http://www.cnblogs.com/linjiqin/&lt;/a&gt;&lt;br /&gt;J2EE、Android、Linux、Oracle QQ交流群：142463980、158560018(满)&lt;/p&gt;&lt;p&gt;题外话：&lt;br /&gt;本人来自铁观音的发源地&amp;mdash;&amp;mdash;泉州安溪，正宗安溪铁观音，有需要的友友欢迎加我Q:416501600。&lt;br /&gt;茶叶淘宝店：&lt;a href="http://shop61968332.taobao.com/"&gt;http://shop61968332.taobao.com/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/linjiqin/aggbug/2469255.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linjiqin/archive/2012/04/25/2469255.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linjiqin/archive/2012/04/20/2459733.html</id><title type="text">js字符串转化为日期及日期判断大小</title><summary type="text">//将字符串转换为日期 var begin=new Date($("#begin").val().replace(/-/g,"/")); var end=new Date($("#end").val().replace(/-/g,"/")); //js判断日期 if(begin-end&gt;0){ alert("开始日期要在截止日期之前!"); return false; }</summary><published>2012-04-20T10:36:00Z</published><updated>2012-04-20T10:36:00Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linjiqin/archive/2012/04/20/2459733.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/archive/2012/04/20/2459733.html"/><content type="html">&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;      &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;将字符串转换为日期&lt;/span&gt;&lt;br/&gt;      &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; begin=&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Date($("#begin").val().replace(/-/g,"/"&lt;span style="color: #000000;"&gt;));&lt;br/&gt;      &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; end=&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Date($("#end").val().replace(/-/g,"/"&lt;span style="color: #000000;"&gt;));&lt;br/&gt;      &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;js判断日期&lt;/span&gt;&lt;br/&gt;      &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;(begin-end&amp;gt;0&lt;span style="color: #000000;"&gt;){&lt;br/&gt;         alert(&lt;/span&gt;"开始日期要在截止日期之前!"&lt;span style="color: #000000;"&gt;);  &lt;br/&gt;         &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;      }&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/linjiqin/aggbug/2459733.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linjiqin/archive/2012/04/20/2459733.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linjiqin/archive/2012/04/18/2455054.html</id><title type="text">webservices客户端调用</title><summary type="text">1)、首先， 你要先把你的WS服务启动起来，比如http://localhost:8080/Example/services/HelloWorldService?wsdl2)、然后，在你的另一个项目中建一个Webservice Client 客户端，用来访问你的WS服务。建立Webservice Client 方法如下，在Eclipses中建立一个java工程，然后在src上右键--NEW---Other---Web Service Client --Xfire--在WsdL url 中写上http://localhost:8080/Example/services/HelloWorldSer</summary><published>2012-04-18T03:48:00Z</published><updated>2012-04-18T03:48:00Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linjiqin/archive/2012/04/18/2455054.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/archive/2012/04/18/2455054.html"/><content type="html">&lt;p&gt;1)、首先， 你要先把你的WS服务启动起来，比如&lt;a href="http://localhost:8080/Example/services/HelloWorldService?wsdl"&gt;http://localhost:8080/Example/services/HelloWorldService?wsdl&lt;/a&gt;&lt;br /&gt;2)、然后，在你的另一个项目中建一个Webservice Client 客户端，用来访问你的WS服务。&lt;br /&gt;建立Webservice Client 方法如下，在Eclipses中建立一个java工程，然后在src上右键--NEW---Other---Web Service Client --Xfire--在WsdL url 中写上&lt;a href="http://localhost:8080/Example/services/HelloWorldService?wsdl"&gt;http://localhost:8080/Example/services/HelloWorldService?wsdl&lt;/a&gt;-----下一步结束。&lt;br /&gt;在src里的会出现一些java文件，你找一个以Client结束的java文件，在里面的main方法中会有个service对象，现在你就可以直接用这个对象了，service.peerstatus(参数)这样写就行了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;1、用java调用webservice客户端&lt;br /&gt;public static void main(String[] args) throws MalformedURLException {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleService simpleService=new SimpleService();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleServicePortType type=simpleService.getSimpleServiceHttpSoap11Endpoint();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int price=type.getPrice().getReturn();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String greet=type.getGreeting("ljq");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(price+" : "+greet);&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/linjiqin/aggbug/2455054.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linjiqin/archive/2012/04/18/2455054.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/linjiqin/archive/2012/04/06/2434806.html</id><title type="text">三、常见分析函数详解</title><summary type="text">为了方便进行实践，特将演示表和数据罗列如下：一、创建表create table t( bill_month varchar2(12) , area_code number, net_type varchar(2), local_fare number );二、插入数据insert into t values('200405',5761,'G', 7393344.04); insert into t values('200405',5761,'J', 5667089.85); insert into t values('20</summary><published>2012-04-06T07:43:00Z</published><updated>2012-04-06T07:43:00Z</updated><author><name>Ruthless</name><uri>http://www.cnblogs.com/linjiqin/</uri></author><link rel="alternate" href="http://www.cnblogs.com/linjiqin/archive/2012/04/06/2434806.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/linjiqin/archive/2012/04/06/2434806.html"/><content type="html">&lt;p&gt;为了方便进行实践，特将演示表和数据罗列如下：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、创建表&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;create&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;table&lt;/span&gt; t( &lt;br /&gt;   bill_month &lt;span style="color: #0000ff;"&gt;varchar2&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;12&lt;/span&gt;) , &lt;br /&gt;   area_code &lt;span style="color: #0000ff;"&gt;number&lt;/span&gt;, &lt;br /&gt;   net_type &lt;span style="color: #0000ff;"&gt;varchar&lt;/span&gt;(&lt;span style="color: #800000; font-weight: bold;"&gt;2&lt;/span&gt;), &lt;br /&gt;   local_fare &lt;span style="color: #0000ff;"&gt;number&lt;/span&gt; &lt;br /&gt;);&lt;/div&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、插入数据&lt;/strong&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200405&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5761&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;7393344.04&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200405&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5761&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;5667089.85&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200405&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5762&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6315075.96&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200405&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5762&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6328716.15&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200405&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5763&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;8861742.59&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200405&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5763&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;7788036.32&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200405&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5764&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6028670.45&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200405&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5764&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6459121.49&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200405&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5765&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;13156065.77&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200405&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5765&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;11901671.70&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200406&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5761&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;7614587.96&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200406&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5761&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;5704343.05&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200406&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5762&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6556992.60&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200406&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5762&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6238068.05&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200406&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5763&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;9130055.46&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200406&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5763&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;7990460.25&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200406&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5764&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6387706.01&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200406&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5764&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6907481.66&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200406&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5765&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;13562968.81&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200406&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5765&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;12495492.50&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200407&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5761&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;7987050.65&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200407&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5761&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;5723215.28&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200407&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5762&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6833096.68&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200407&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5762&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6391201.44&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200407&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5763&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;9410815.91&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200407&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5763&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;8076677.41&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200407&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5764&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6456433.23&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200407&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5764&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6987660.53&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200407&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5765&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;14000101.20&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200407&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5765&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;12301780.20&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200408&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5761&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;8085170.84&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200408&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5761&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6050611.37&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200408&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5762&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6854584.22&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200408&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5762&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6521884.50&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200408&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5763&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;9468707.65&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200408&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5763&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;8460049.43&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200408&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5764&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;6587559.23&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200408&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5764&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;7342135.86&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200408&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5765&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;G&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;14450586.63&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;insert&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;into&lt;/span&gt; t &lt;span style="color: #0000ff;"&gt;values&lt;/span&gt;(&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;200408&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;,&lt;span style="color: #800000; font-weight: bold;"&gt;5765&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;J&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'&lt;/span&gt;, &lt;span style="color: #800000; font-weight: bold;"&gt;12680052.38&lt;/span&gt;); &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;commit&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、first_value()与last_value()：求最值对应的其他属性&lt;/strong&gt;&lt;br /&gt;问题、取出每月通话费最高和最低的两个地区。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; BILL_MONTH, &lt;br /&gt;       AREA_CODE,&lt;br /&gt;       &lt;span style="color: #ff00ff;"&gt;SUM&lt;/span&gt;(LOCAL_FARE) LOCAL_FARE, &lt;br /&gt;       FIRST_VALUE(AREA_CODE) &lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;(PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; BILL_MONTH &lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;SUM&lt;/span&gt;(LOCAL_FARE) &lt;span style="color: #0000ff;"&gt;DESC&lt;/span&gt; &lt;br /&gt;            ROWS &lt;span style="color: #808080;"&gt;BETWEEN&lt;/span&gt; UNBOUNDED PRECEDING &lt;span style="color: #808080;"&gt;AND&lt;/span&gt; UNBOUNDED FOLLOWING) FIRSTVAL, &lt;br /&gt;       LAST_VALUE(AREA_CODE) &lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;(PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; BILL_MONTH &lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; &lt;span style="color: #ff00ff;"&gt;SUM&lt;/span&gt;(LOCAL_FARE) &lt;span style="color: #0000ff;"&gt;DESC&lt;/span&gt; &lt;br /&gt;            ROWS &lt;span style="color: #808080;"&gt;BETWEEN&lt;/span&gt; UNBOUNDED PRECEDING &lt;span style="color: #808080;"&gt;AND&lt;/span&gt; UNBOUNDED FOLLOWING) LASTVAL &lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; T &lt;br /&gt; &lt;span style="color: #0000ff;"&gt;GROUP&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; BILL_MONTH, AREA_CODE &lt;br /&gt; &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; BILL_MONTH&lt;/div&gt;&lt;p&gt;运行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012040615282316.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;四、rank(),dense_rank()与row_number()：求排序&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;rank，dense_rank，row_number函数为每条记录产生一个从1开始至n的自然数，n的值可能小于等于记录的总数。&lt;span style="color: #ff0000;"&gt;这3个函数的唯一区别在于当碰到相同数据时的排名策略&lt;/span&gt;。 &lt;br /&gt;①row_number： &lt;br /&gt;row_number函数返回一个唯一的值，&lt;span style="color: #ff0000;"&gt;当碰到相同数据时，排名按照记录集中记录的顺序依次递增&lt;/span&gt;。 &lt;br /&gt;②dense_rank： &lt;br /&gt;dense_rank函数返回一个唯一的值，&lt;span style="color: #ff0000;"&gt;当碰到相同数据时，此时所有相同数据的排名都是一样的&lt;/span&gt;。 &lt;br /&gt;③rank： &lt;br /&gt;rank函数返回一个唯一的值，&lt;span style="color: #ff0000;"&gt;当碰到相同的数据时，此时所有相同数据的排名是一样的，同时会在最后一条相同记录和下一条不同记录的排名之间空出排名&lt;/span&gt;。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;演示数据在Oracle自带的scott用户下：&lt;br /&gt;1、rank()值相同时排名相同，其后排名跳跃不连续&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #808080;"&gt;*&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; DEPTNO, &lt;br /&gt;               RANK() &lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;(PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; DEPTNO &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; SAL &lt;span style="color: #0000ff;"&gt;DESC&lt;/span&gt;) RW, &lt;br /&gt;               ENAME,&lt;br /&gt;               SAL&lt;br /&gt;          &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; SCOTT.EMP) &lt;br /&gt; &lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt; RW &lt;span style="color: #808080;"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;运行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012040615331530.png" alt="" /&gt;&lt;br /&gt;2、dense_rank()值相同时排名相同，其后排名连续不跳跃&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #808080;"&gt;*&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; DEPTNO, &lt;br /&gt;               DENSE_RANK() &lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;(PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; DEPTNO &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; SAL &lt;span style="color: #0000ff;"&gt;DESC&lt;/span&gt;) RW, &lt;br /&gt;               ENAME,&lt;br /&gt;               SAL&lt;br /&gt;          &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; SCOTT.EMP) &lt;br /&gt; &lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt; RW &lt;span style="color: #808080;"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;运行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012040615355970.png" alt="" /&gt;&lt;br /&gt;3、row_number()值相同时排名不相等，其后排名连续不跳跃&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #808080;"&gt;*&lt;/span&gt; &lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; DEPTNO, &lt;br /&gt;               ROW_NUMBER() &lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;(PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; DEPTNO &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; SAL &lt;span style="color: #0000ff;"&gt;DESC&lt;/span&gt;) RW, &lt;br /&gt;               ENAME,&lt;br /&gt;               SAL&lt;br /&gt;          &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; SCOTT.EMP) &lt;br /&gt; &lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt; RW &lt;span style="color: #808080;"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;4&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;运行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012040615372594.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;五、lag()与lead()：求之前或之后的第N行&lt;/strong&gt; &lt;br /&gt;lag和lead函数可以在一次查询中取出同一字段的前n行的数据和后n行的值。这种操作可以使用对相同表的表连接来实现，不过使用lag和lead有更高的效率。&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;lag(arg1,arg2,arg3)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;第一个参数是列名，&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;第二个参数是偏移的offset，&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;第三个参数是超出记录窗口时的默认值。&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;举例如下：&lt;br /&gt;SQL&amp;gt; select *&amp;nbsp; from kkk;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;---------- --------------------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 1name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 2name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 3name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 4name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 5name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select id,name,lag(name,1,0) over(order by id) from kkk; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LAG(NAME,1,0)OVER(ORDERBYID)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;---------- -------------------- ----------------------------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 1name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 2name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 3name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 4name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 5name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4name&lt;/p&gt;&lt;p&gt;SQL&amp;gt; select id,name,lead(name,1,0) over(order by id) from kkk;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEAD(NAME,1,0)OVER(ORDERBYID)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;---------- -------------------- -----------------------------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 1name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 2name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 3name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 4name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 5name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/p&gt;&lt;p&gt;SQL&amp;gt; select id,name,lead(name,2,0) over(order by id) from kkk;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEAD(NAME,2,0)OVER(ORDERBYID)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;---------- -------------------- -----------------------------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 1name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 2name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 3name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 4name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 5name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp; &lt;br /&gt;SQL&amp;gt; select id,name,lead(name,1,'linjiqin') over(order by id) from kkk;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEAD(NAME,1,'ALSDFJLASDJFSAF')&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;---------- -------------------- ------------------------------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 1name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 2name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3 3name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4 4name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5 5name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; linjiqin&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;---------------------------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;六、rollup()与cube()：排列组合分组&lt;/strong&gt; &lt;br /&gt;&lt;span style="color: #ff0000;"&gt;1)、group by rollup(a, b, c)：&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;首先会对(a、b、c)进行group by，&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;然后再对(a、b)进行group by，&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;其后再对(a)进行group by，&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;最后对全表进行汇总操作。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;2)、group by cube(a, b, c)：&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;则首先会对(a、b、c)进行group by，&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;然后依次是(a、b)，(a、c)，(a)，(b、c)，(b)，(c)，&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff0000;"&gt;最后对全表进行汇总操作。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;1、生成演示数据：&lt;/span&gt;&lt;br /&gt;Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 &lt;br /&gt;Connected as ds_trade&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SQL&amp;gt; conn system/oracle as sysdba&lt;br /&gt;Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 &lt;br /&gt;Connected as SYS&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SQL&amp;gt; create table scott.t as select * from dba_indexes;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Table created&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SQL&amp;gt; connect scott/oracle&lt;br /&gt;Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 &lt;br /&gt;Connected as scott&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SQL&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;2、普通group by体验&lt;/span&gt;&lt;br /&gt;sql&amp;gt; select owner, index_type, status, count(*) from t where owner like 'SY%' group by owner, index_type, status;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012040617130779.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;3、group by rollup(A,B,C)&lt;/span&gt;&lt;br /&gt;GROUP BY ROLLUP(A, B, C)：&lt;br /&gt;首先会对(A、B、C)进行GROUP BY，&lt;br /&gt;然后再对(A、B)进行GROUP BY，&lt;br /&gt;其后再对(A)进行GROUP BY，&lt;br /&gt;最后对全表进行汇总操作。&lt;br /&gt;sql&amp;gt; select owner, index_type, status, count(*) from t where owner like 'SY%' group by ROLLUP(owner, index_type, status);&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012040617132888.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #ff0000;"&gt;4、group by cube(A,B,C)&lt;/span&gt;&lt;br /&gt;GROUP BY CUBE(A, B, C)：&lt;br /&gt;则首先会对(A、B、C)进行GROUP BY，&lt;br /&gt;然后依次是(A、B)，(A、C)，(A)，(B、C)，(B)，(C)，&lt;br /&gt;最后对全表进行汇总操作。&lt;/p&gt;&lt;p&gt;sql&amp;gt; select owner, index_type, status, count(*) from t where owner like 'SY%' group by cube(owner, index_type, status);&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012040617134765.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;七、max(),min(),sun()与avg()：求移动的最值总和与平均值&lt;/strong&gt;&lt;br /&gt;问题：计算出各个地区连续3个月的通话费用的平均数(移动平均值)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; AREA_CODE, &lt;br /&gt;       BILL_MONTH,&lt;br /&gt;       LOCAL_FARE,&lt;br /&gt;       &lt;span style="color: #ff00ff;"&gt;SUM&lt;/span&gt;(LOCAL_FARE) &lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;(PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; AREA_CODE &lt;br /&gt;                            &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; TO_NUMBER(BILL_MONTH) &lt;br /&gt;                            RANGE &lt;span style="color: #808080;"&gt;BETWEEN&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; PRECEDING &lt;span style="color: #808080;"&gt;AND&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; FOLLOWING) "3month_sum", &lt;br /&gt;       &lt;span style="color: #ff00ff;"&gt;AVG&lt;/span&gt;(LOCAL_FARE) &lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;(PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; AREA_CODE &lt;br /&gt;                            &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; TO_NUMBER(BILL_MONTH) &lt;br /&gt;                            RANGE &lt;span style="color: #808080;"&gt;BETWEEN&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; PRECEDING &lt;span style="color: #808080;"&gt;AND&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; FOLLOWING) "3month_avg", &lt;br /&gt;       &lt;span style="color: #ff00ff;"&gt;MAX&lt;/span&gt;(LOCAL_FARE) &lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;(PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; AREA_CODE &lt;br /&gt;                            &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; TO_NUMBER(BILL_MONTH) &lt;br /&gt;                            RANGE &lt;span style="color: #808080;"&gt;BETWEEN&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; PRECEDING &lt;span style="color: #808080;"&gt;AND&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; FOLLOWING) "3month_max", &lt;br /&gt;       &lt;span style="color: #ff00ff;"&gt;MIN&lt;/span&gt;(LOCAL_FARE) &lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;(PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; AREA_CODE &lt;br /&gt;                            &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; TO_NUMBER(BILL_MONTH) &lt;br /&gt;                            RANGE &lt;span style="color: #808080;"&gt;BETWEEN&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; PRECEDING &lt;span style="color: #808080;"&gt;AND&lt;/span&gt; &lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt; FOLLOWING) "3month_min" &lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; T.AREA_CODE, T.BILL_MONTH, &lt;span style="color: #ff00ff;"&gt;SUM&lt;/span&gt;(T.LOCAL_FARE) LOCAL_FARE &lt;br /&gt;          &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; T &lt;br /&gt;         &lt;span style="color: #0000ff;"&gt;GROUP&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; T.AREA_CODE, T.BILL_MONTH)&lt;/div&gt;&lt;p&gt;运行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012040711242793.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;问题：求各地区按月份累加的通话费&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; AREA_CODE, &lt;br /&gt;       BILL_MONTH,&lt;br /&gt;       LOCAL_FARE,&lt;br /&gt;       &lt;span style="color: #ff00ff;"&gt;SUM&lt;/span&gt;(LOCAL_FARE) &lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;(PARTITION &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; AREA_CODE &lt;br /&gt;                            &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; BILL_MONTH &lt;span style="color: #0000ff;"&gt;ASC&lt;/span&gt;) "last_sum_value" &lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt; T.AREA_CODE, T.BILL_MONTH, &lt;span style="color: #ff00ff;"&gt;SUM&lt;/span&gt;(T.LOCAL_FARE) LOCAL_FARE &lt;br /&gt;          &lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt; T &lt;br /&gt;         &lt;span style="color: #0000ff;"&gt;GROUP&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; T.AREA_CODE, T.BILL_MONTH) &lt;br /&gt; &lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt; AREA_CODE, BILL_MONTH&lt;/div&gt;&lt;p&gt;运行结果：&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/270324/2012040711285263.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;--------------------------------------------------------------------------&lt;br /&gt;Blog：&lt;a href="http://www.cnblogs.com/linjiqin/"&gt;http://www.cnblogs.com/linjiqin/&lt;/a&gt;&lt;br /&gt;J2EE、Android、Linux、Oracle QQ交流群：142463980、158560018(满)&lt;/p&gt;&lt;p&gt;题外话：&lt;br /&gt;本人来自铁观音的发源地&amp;mdash;&amp;mdash;泉州安溪，正宗安溪铁观音，有需要的友友欢迎加我Q:416501600。&lt;br /&gt;茶叶淘宝店：&lt;a href="http://shop61968332.taobao.com/"&gt;http://shop61968332.taobao.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/linjiqin/aggbug/2434806.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/linjiqin/archive/2012/04/06/2434806.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
