﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-henry1451 的专栏-文章分类-Oracle技术</title><link>http://www.blogjava.net/henry1451/category/31586.html</link><description>共同学习,共同进步</description><language>zh-cn</language><lastBuildDate>Wed, 18 Jun 2008 13:55:17 GMT</lastBuildDate><pubDate>Wed, 18 Jun 2008 13:55:17 GMT</pubDate><ttl>60</ttl><item><title>Oracle中的OOP(转)</title><link>http://www.blogjava.net/henry1451/articles/208946.html</link><dc:creator>henry1451</dc:creator><author>henry1451</author><pubDate>Wed, 18 Jun 2008 09:42:00 GMT</pubDate><guid>http://www.blogjava.net/henry1451/articles/208946.html</guid><wfw:comment>http://www.blogjava.net/henry1451/comments/208946.html</wfw:comment><comments>http://www.blogjava.net/henry1451/articles/208946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/henry1451/comments/commentRss/208946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/henry1451/services/trackbacks/208946.html</trackback:ping><description><![CDATA[<p><font style="background-color: #c4ecc9">本文来自:<font style="background-color: #c4ecc9">http://www.blogjava.net/improviser/archive/2007/10/02/150166.html<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000080" size="4">关系数据库在不断地发展时，许多数据库引入了面向对象的思想，这其中以Oracle为代表，Oracle9i就号称面向对象数据库。</font> <font color="#000080" size="4">自Oracle9i以来，Oracle就不再是单纯的关系数据库管理系统，它在关系数据库模型的基础上，添加了一系列面向对象的特性。Oracle的对象体系遵从面向对象思想的基本特征，许多概念同C++,JAVA中类似，具有继承，重载，多态等特征，但又有自己的特点。<br />
<br />
1、 </font><span><font color="#000080" size="4">Oracle面向对象的最基本元素是它的对象类型——<strong>Type</strong>。<br />
下面开始写自定义对象类型(</font> <font color="#000080" size="4">as object</font> <font color="#000080" size="4">必须关键字)</font> <br />
</p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">1</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span><span style="color: rgb(0,0,0)">&nbsp;type&nbsp;ADDRESS&nbsp;</span><span style="color: rgb(0,0,255)">as</span><span style="color: rgb(0,0,0)">&nbsp;object<br />
</span><span style="color: rgb(0,128,128)">2</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">3</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PROVINCE&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">10</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">4</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CITY&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">5</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STREET&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">30</span><span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">6</span>&nbsp;<span style="color: rgb(0,0,0)">);</span></div>
<p><br />
<font color="#000080" size="4">创建表并使用以上对象类型ADDRESS</font> <br />
</p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">1</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">&nbsp;STUDENTOBJ&nbsp;<br />
</span><span style="color: rgb(0,128,128)">2</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">3</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;STUNAME&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">4</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;STUADD&nbsp;&nbsp;ADDRESS<br />
</span><span style="color: rgb(0,128,128)">5</span>&nbsp;<span style="color: rgb(0,0,0)">);<br />
</span><span style="color: rgb(0,128,128)">6</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">7</span>&nbsp;<span style="color: rgb(0,0,0)">向表中插入数据：<br />
</span><span style="color: rgb(0,128,128)">8</span>&nbsp;<span style="color: rgb(0,0,255)">insert</span>&nbsp;<span style="color: rgb(0,0,255)">into</span><span style="color: rgb(0,0,0)">&nbsp;STUDENTOBJ&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">(</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">improviser</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,ADDRESS(</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">广东省</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">广州市</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">，</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">江海大道</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">);</span></div>
<p><br />
<font color="#000080" size="4">通过别名对表进行查询</font> <br />
</p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">1</span>&nbsp;<span style="color: rgb(0,0,255)">select</span><span style="color: rgb(0,0,0)">&nbsp;S.STUNAME&nbsp;S.ADDRESS.PROVINCE&nbsp;S.ADDRESS.CITY <br />
2 S.ADDRESS.STREET&nbsp;</span><span style="color: rgb(0,0,255)">from</span><span style="color: rgb(0,0,0)">&nbsp;STUDENTOBJ&nbsp;S;</span></div>
<p><font color="#000080" size="4"><br />
</font></span><span><font color="#000080" size="4">从上面的测试代码，可以很容易看到其与面向对象语言（比如Java）的差异，不必使用new创建实例，也没有了默认无参数构造器，默认使用定义的属性作为构造器参数，足以描述各种实体。另外，Type的属性没有private,protected,public的说法，所有的属性调用者都可以访问，即都是public。<br />
<br />
2、Oracle中面向对象特征——<strong>继承</strong>(父类型必须声明为NOT FINAL,子类型使用关键字UNDER)</font> <br />
</p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,0)">创建父类型<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span><span style="color: rgb(0,0,0)">&nbsp;type&nbsp;PERSON&nbsp;</span><span style="color: rgb(0,0,255)">as</span><span style="color: rgb(0,0,0)">&nbsp;object<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;PERNAME&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">10</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;PERSEX&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">2</span><span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span>&nbsp;<span style="color: rgb(0,0,0)">)</span><span style="color: rgb(128,128,128)">not</span><span style="color: rgb(0,0,0)">&nbsp;final;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span>&nbsp;<span style="color: rgb(0,0,0)">子类型继承父类型<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span><span style="color: rgb(0,0,0)">&nbsp;type&nbsp;STUDENT&nbsp;under&nbsp;PERSON<br />
</span><span style="color: rgb(0,128,128)">10</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">11</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;STUNO&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">8</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">12</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;STUSCORE&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">10</span><span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">13</span>&nbsp;<span style="color: rgb(0,0,0)">);<br />
<br />
由以上定义，其子类型中属性包含了父类型中所有属性。<br />
</span></div>
<p><strong><font color="#000080" size="4"><strong>3、可变数组</strong> <br />
</font></span><font color="#000080" size="4">可变数组，是一种集合。一个可变数组是对象的一个集合，其中每个对象都具有相同的数据类型。可变数组的大小由创建时决定。在表中建立可变数组后，可变数组在主表中作为一个列对待。</font> <br />
</p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,0)">创建对象类型<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span><span style="color: rgb(0,0,0)">&nbsp;type&nbsp;ADDRESS&nbsp;</span><span style="color: rgb(0,0,255)">as</span><span style="color: rgb(0,0,0)">&nbsp;object<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;PROVINCE&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">10</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;CITY&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span>&nbsp;<span style="color: rgb(0,0,0)">);<br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span>&nbsp;<span style="color: rgb(0,0,0)">创建ADDRESS可变数组<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span><span style="color: rgb(0,0,0)">&nbsp;type&nbsp;ADDRESS_LIST&nbsp;</span><span style="color: rgb(0,0,255)">as</span><span style="color: rgb(0,0,0)">&nbsp;varray(</span><span style="font-weight: bold; color: rgb(128,0,0)">3</span><span style="color: rgb(0,0,0)">)&nbsp;</span><span style="color: rgb(0,0,255)">of</span><span style="color: rgb(0,0,0)">&nbsp;ADDRESS;<br />
</span><span style="color: rgb(0,128,128)">10</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">11</span>&nbsp;<span style="color: rgb(0,0,0)">创建表并使用可变数组ADDRESS_LIST<br />
</span><span style="color: rgb(0,128,128)">12</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">&nbsp;STUDENT&nbsp;<br />
</span><span style="color: rgb(0,128,128)">13</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">14</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;STUNAME&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">15</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;STUADDS&nbsp;ADDRESS_LIST<br />
</span><span style="color: rgb(0,128,128)">16</span>&nbsp;<span style="color: rgb(0,0,0)">);<br />
</span><span style="color: rgb(0,128,128)">17</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">18</span>&nbsp;<span style="color: rgb(0,0,0)">向表中插入数据<br />
</span><span style="color: rgb(0,128,128)">19</span>&nbsp;<span style="color: rgb(0,0,255)">insert</span>&nbsp;<span style="color: rgb(0,0,255)">into</span><span style="color: rgb(0,0,0)">&nbsp;STUDENT&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">(</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">improviser</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,ADDRESS_LIST(ADDRESS(</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">广东省</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">广州市</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">江海大道</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADDRESS(</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">广东省</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">潮州市</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">潮枫路</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">)));<br />
</span><span style="color: rgb(0,128,128)">20</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">21</span>&nbsp;<span style="color: rgb(0,0,0)">查询(使用table函数将数据表格形式输出)<br />
</span><span style="color: rgb(0,128,128)">22</span>&nbsp;<span style="color: rgb(0,0,255)">select</span>&nbsp;<span style="color: rgb(128,128,128)">*</span><span style="color: rgb(0,0,255)">from</span>&nbsp;<span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">(</span><span style="color: rgb(0,0,255)">select</span><span style="color: rgb(0,0,0)">&nbsp;s.STUADDS&nbsp;</span><span style="color: rgb(0,0,255)">from</span><span style="color: rgb(0,0,0)">&nbsp;STUDENT&nbsp;</span><span style="color: rgb(0,0,255)">where</span><span style="color: rgb(0,0,0)">&nbsp;STUNAME</span><span style="color: rgb(128,128,128)">=</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">improviser</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">);</span></div>
<p><br />
<font color="#000080" size="4"><strong>4、嵌套表</strong> <br />
嵌套表是表中之表，一个嵌套表是某些行的集合，它在主表中表示为其中的一列。对主表中的每一条记录，嵌套表可以包含多个行。</font> <br />
</p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,0)">定义嵌套表方法：<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span><span style="color: rgb(0,0,0)">&nbsp;type&nbsp;ADDRESS_TABLE&nbsp;</span><span style="color: rgb(0,0,255)">as</span>&nbsp;<span style="color: rgb(0,0,255)">table</span>&nbsp;<span style="color: rgb(128,128,128)">of</span><span style="color: rgb(0,0,0)"> ADDRESS;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,0)">基本对象类型、创建表、查询和插入数据都跟上面可变数组一样<br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span>&nbsp;<span style="color: rgb(0,0,0)">嵌套表更新</span><span style="font-size: 10.5pt; color: rgb(153,51,0); font-family: 宋体">（</span><span style="font-size: 10.5pt; color: red; font-family: 'Times New Roman'">table</span><span style="font-size: 10.5pt; color: red; font-family: 宋体">转化为表再利用表别名操作列进行更新</span><span style="font-size: 10.5pt; color: rgb(153,51,0); font-family: 宋体">）</span><br />
<span style="color: rgb(0,128,128)">&nbsp;7</span>&nbsp;<span style="color: rgb(0,0,255)">update</span>&nbsp;<span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">(</span><span style="color: rgb(0,0,255)">select</span><span style="color: rgb(0,0,0)">&nbsp;S.STUADDS&nbsp;</span><span style="color: rgb(0,0,255)">from</span><span style="color: rgb(0,0,0)">&nbsp;STUDENT&nbsp;S&nbsp;</span><span style="color: rgb(0,0,255)">where</span><span style="color: rgb(0,0,0)"><br />
&nbsp;</span><span style="color: rgb(0,128,128)">8</span><span style="color: rgb(0,0,0)">&nbsp; S.STUNAME&nbsp;</span><span style="color: rgb(128,128,128)">=</span>&nbsp;<span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">improviser</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">)&nbsp;AD </span><span style="color: rgb(0,0,255)">set</span><span style="color: rgb(0,0,0)">&nbsp;AD.PROVINCE&nbsp;</span><span style="color: rgb(128,128,128)">=</span>&nbsp;<span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">北京</span><span style="color: rgb(255,0,0)">'</span>&nbsp;<span style="color: rgb(0,0,255)">where</span><span style="color: rgb(0,0,0)">&nbsp;city&nbsp;</span><span style="color: rgb(128,128,128)">=</span>&nbsp;<span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">广州</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">10</span><span style="color: rgb(0,0,0)">删除嵌套表记录<br />
</span><span style="color: rgb(0,128,128)">11</span><span style="color: rgb(0,0,255)">delete</span>&nbsp;<span style="color: rgb(0,0,255)">from</span>&nbsp;<span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">(</span><span style="color: rgb(0,0,255)">select</span><span style="color: rgb(0,0,0)">&nbsp;S.STUADDS&nbsp;</span><span style="color: rgb(0,0,255)">from</span><span style="color: rgb(0,0,0)">&nbsp;STUDENT&nbsp;S <br />
12 &nbsp; </span><span style="color: rgb(0,0,255)">where</span><span style="color: rgb(0,0,0)">&nbsp;S.STUNAME&nbsp;</span><span style="color: rgb(128,128,128)">=</span>&nbsp;<span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">improviser</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">)&nbsp;AD </span><span style="color: rgb(0,0,255)">where</span><span style="color: rgb(0,0,0)">&nbsp;AD.city&nbsp;</span><span style="color: rgb(128,128,128)">=</span>&nbsp;<span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">潮州</span><span style="color: rgb(255,0,0)">市'</span><span style="color: rgb(0,0,0)">;<br />
</span><span style="color: rgb(0,128,128)">13</span></div>
<p><span style="color: blue; font-family: 宋体"><br />
<br />
&nbsp;&nbsp;<font size="4">&nbsp; 比较：可变数组，查询速度快，但是更新困难得整体更新，适用与数据不修改情况，如医生处方。使用嵌套表可以对表中的表内容进行修改而无需进行整体更新操作。</font></span> </p>
<p><strong><font color="#000080" size="4">4、对象表</font> </strong></p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,0)">首先创建对象类型<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span><span style="color: rgb(0,0,0)">&nbsp;type&nbsp;OFFICETYPE&nbsp;</span><span style="color: rgb(0,0,255)">as</span><span style="color: rgb(0,0,0)">&nbsp;object<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;id&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">10</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span>&nbsp;<span style="color: rgb(0,0,0)">);<br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span>&nbsp;<span style="color: rgb(0,0,0)">将对象类型转化为对象表<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">&nbsp;office&nbsp;</span><span style="color: rgb(0,0,255)">of</span><span style="color: rgb(0,0,0)">&nbsp;officetype;<br />
</span><span style="color: rgb(0,128,128)">10</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">11</span>&nbsp;<span style="color: rgb(0,0,0)">创建对象关系表（使用ref&nbsp;，指示OID进行对象表关联）<br />
</span><span style="color: rgb(0,128,128)">12</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">&nbsp;worker<br />
</span><span style="color: rgb(0,128,128)">13</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">14</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;workerid&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">10</span><span style="color: rgb(0,0,0)">)&nbsp;</span><span style="color: rgb(0,0,255)">primary</span>&nbsp;<span style="color: rgb(0,0,255)">key</span><span style="color: rgb(0,0,0)">,<br />
</span><span style="color: rgb(0,128,128)">15</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;workername&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">16</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;workeroffice&nbsp;ref&nbsp;officetpey&nbsp;scope&nbsp;</span><span style="color: rgb(0,0,255)">is</span><span style="color: rgb(0,0,0)">&nbsp;office,<br />
</span><span style="color: rgb(0,128,128)">17</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;phone&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">18</span>&nbsp;<span style="color: rgb(0,0,0)">);<br />
</span><span style="color: rgb(0,128,128)">19</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">20</span>&nbsp;<span style="color: rgb(0,0,0)">使用deref&nbsp;取得关联对象表相关内容<br />
</span><span style="color: rgb(0,128,128)">21</span>&nbsp;<span style="color: rgb(0,0,255)">select</span><span style="color: rgb(0,0,0)">&nbsp;workerid,workername,deref(w.workeroffice),phone&nbsp;</span><span style="color: rgb(0,0,255)">from</span><span style="color: rgb(0,0,0)">&nbsp;worker&nbsp;w <br />
&nbsp;&nbsp; </span><span style="color: rgb(0,0,255)">where</span><span style="color: rgb(0,0,0)">&nbsp;workerid&nbsp;</span><span style="color: rgb(128,128,128)">=</span>&nbsp;<span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">C001</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">;<br />
</span><span style="color: rgb(0,128,128)">22</span>&nbsp;<span style="color: rgb(0,0,0)">结果为<br />
</span><span style="color: rgb(0,128,128)">23</span>&nbsp;<span style="color: rgb(0,0,0)">C001&nbsp;&nbsp;&nbsp;张小明&nbsp;&nbsp;OFFICETYPE(</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">0001</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,&nbsp;</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">财务科</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-weight: bold; color: rgb(128,0,0)">010</span><span style="color: rgb(128,128,128)">-</span><span style="font-weight: bold; color: rgb(128,0,0)">12345</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">24</span>&nbsp;<span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">25</span>&nbsp;<span style="color: rgb(0,0,0)">使用VALUE(别名)查询对象内容<br />
</span><span style="color: rgb(0,128,128)">26</span>&nbsp;<span style="color: rgb(0,0,255)">select</span><span style="color: rgb(0,0,0)">&nbsp;value(o)&nbsp;</span><span style="color: rgb(0,0,255)">from</span><span style="color: rgb(0,0,0)">&nbsp;office&nbsp;o;<br />
</span><span style="color: rgb(0,128,128)">27</span>&nbsp;</div>
<p><br />
<strong><font color="#000080" size="4">5、对象视图</font> </strong><br />
</p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">1</span>&nbsp;<span style="color: rgb(0,0,0)">创建对象视图（通过OID连接dept）<br />
</span><span style="color: rgb(0,128,128)">2</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(0,0,255)">view</span><span style="color: rgb(0,0,0)">&nbsp;deptview&nbsp;</span><span style="color: rgb(0,0,255)">of</span><span style="color: rgb(0,0,0)">&nbsp;deptype&nbsp;</span><span style="color: rgb(0,0,255)">with</span><span style="color: rgb(0,0,0)">&nbsp;object&nbsp;oid(deptno)&nbsp;</span><span style="color: rgb(0,0,255)">as</span>&nbsp;<span style="color: rgb(0,0,255)">select</span>&nbsp;<span style="color: rgb(128,128,128)">*</span><span style="color: rgb(0,0,255)">from</span><span style="color: rgb(0,0,0)">&nbsp;dept；<br />
</span><span style="color: rgb(0,128,128)">3</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(0,0,255)">view</span><span style="color: rgb(0,0,0)">&nbsp;emp_view&nbsp;</span><span style="color: rgb(0,0,255)">as</span>&nbsp;<span style="color: rgb(0,0,255)">select</span><span style="color: rgb(0,0,0)">&nbsp;make_ref(deptview,deptno)&nbsp;deptoid,empno,ename <br />
</span><span style="color: rgb(0,128,128)">4</span>&nbsp;<span style="color: rgb(0,0,255)">&nbsp; from</span><span style="color: rgb(0,0,0)">&nbsp;emp;<br />
</span></div>
<p><br />
<font color="#000080" size="4">好了，有关Oracle中面向对象的内容就简要叙述这么多了，虽然现在很少使用到，但在以后有用到之处有一定的参考作用。</font></strong><br />
</font></font></p>
<img src ="http://www.blogjava.net/henry1451/aggbug/208946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/henry1451/" target="_blank">henry1451</a> 2008-06-18 17:42 <a href="http://www.blogjava.net/henry1451/articles/208946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle数据库对象(转)</title><link>http://www.blogjava.net/henry1451/articles/208940.html</link><dc:creator>henry1451</dc:creator><author>henry1451</author><pubDate>Wed, 18 Jun 2008 09:37:00 GMT</pubDate><guid>http://www.blogjava.net/henry1451/articles/208940.html</guid><wfw:comment>http://www.blogjava.net/henry1451/comments/208940.html</wfw:comment><comments>http://www.blogjava.net/henry1451/articles/208940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/henry1451/comments/commentRss/208940.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/henry1451/services/trackbacks/208940.html</trackback:ping><description><![CDATA[本文来自:<font style="background-color: #c4ecc9">http://www.blogjava.net/improviser/archive/2007/10/01/150124.html</font><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000080" size="4">本文研究有关Oracle数据库对象的用法。Oracle中包含五种数据库对象，分别为别名、序列、视图、索引和簇，其中别名和序列为Oracle中特有的数据库对象。<br />
<br />
&nbsp;&nbsp;&nbsp; 别名：通过对Oracle中数据表设置别名之后，可以使用别名对数据表进行与原表名同样的各种操作。其语句关键字为<strong><font color="#ff0000">synonym</font></strong>，下面看其具体用法。<br />
&nbsp;&nbsp;&nbsp; 创建同义词：create <font color="#ff0000">synonym </font>student for stu; <br />
&nbsp;&nbsp;&nbsp; 通过创建后，student即为stu表的别名，因此以下两语句执行结果为一样的<br />
&nbsp;&nbsp;&nbsp; select *from student;&nbsp; ==&gt;&nbsp;&nbsp; select *from stu;<br />
&nbsp;&nbsp;&nbsp; 删除同义词：drop synonym student;<br />
<br />
&nbsp;&nbsp;&nbsp; <strong>序列：</strong>作为Oracle的特有对象，序列用来实现Oracle的主键自增，这是区别于其他关系数据库的。关键字为<font color="#ff0000"><strong>sequence</strong></font>。<br />
&nbsp;&nbsp;&nbsp; 创建序列方法：create <strong>sequence </strong>NumSeq increment <strong>by</strong> 1 <strong>start with</strong> 1 <strong>maxvalue </strong>999;创建一个序列从1开始递增量为1并设置最大值为999。<br />
&nbsp;&nbsp;&nbsp; 序列使用：insert into testTable values(NumSeq.nextVal);<span lang="EN-US" style="color: blue"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nextVal</span><span lang="EN-US"><span>&nbsp; </span></span><span style="font-family: 宋体">返回下一个可用的值</span><span lang="EN-US" style="color: blue">;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; currVal</span><span lang="EN-US"><span>&nbsp; </span></span><span style="font-family: 宋体">获得当前序列中值</span><span lang="EN-US"><span>&nbsp;&nbsp; </span></span><span style="font-family: 宋体">第一次需先返回一个</span><span lang="EN-US">nextVal</span><span style="font-family: 宋体">，才能取得<strong>curr</strong></span><span lang="EN-US">Val</span><span style="font-family: 宋体">值.&nbsp;&nbsp; <br />
</span><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alter&nbsp; sequence<span>&nbsp; </span></span><span style="font-family: 宋体">修改序列定义: alter sequence NumSeq set maxvalue 1000;<br />
<br />
&nbsp;&nbsp;&nbsp; <strong>视图与索引：</strong>其用法与其他数据库相同，这里不多赘述。<br />
<br />
&nbsp;&nbsp;&nbsp; <strong>簇：</strong></span><span style="font-family: 宋体">两表或多个表中存在相同列，将相同列存储在一个空间中，以节省空间</span>。<br />
&nbsp;&nbsp;&nbsp; 创建簇方法：<br />
&nbsp;&nbsp;&nbsp; create cluser classcluser<br />
&nbsp;&nbsp;&nbsp; (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClassNo varchar2(10)<br />
&nbsp;&nbsp;&nbsp; );<br />
&nbsp;&nbsp;&nbsp; 为簇创建索引&nbsp; create index cluserIndex on cluser classcluser;<br />
<br />
&nbsp;&nbsp;&nbsp; 创建表StuClass并指向已定义簇<br />
&nbsp;&nbsp;&nbsp; create table StuClass <br />
&nbsp;&nbsp;&nbsp; (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClassNo varchar2(10)，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClassName varchar2(20)<br />
&nbsp;&nbsp;&nbsp; )cluser classcluser(ClassNo);<br />
<br />
&nbsp;&nbsp;&nbsp; 创建表Student并指向已定义簇<br />
&nbsp;&nbsp;&nbsp; create table Student<br />
&nbsp;&nbsp;&nbsp; (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StuNo int,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ClassNo varchar2(10)<br />
&nbsp;&nbsp;&nbsp; )cluser classcluser(ClassNo);<br />
</font>
<img src ="http://www.blogjava.net/henry1451/aggbug/208940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/henry1451/" target="_blank">henry1451</a> 2008-06-18 17:37 <a href="http://www.blogjava.net/henry1451/articles/208940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle表分区总结(转)</title><link>http://www.blogjava.net/henry1451/articles/208932.html</link><dc:creator>henry1451</dc:creator><author>henry1451</author><pubDate>Wed, 18 Jun 2008 09:28:00 GMT</pubDate><guid>http://www.blogjava.net/henry1451/articles/208932.html</guid><wfw:comment>http://www.blogjava.net/henry1451/comments/208932.html</wfw:comment><comments>http://www.blogjava.net/henry1451/articles/208932.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/henry1451/comments/commentRss/208932.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/henry1451/services/trackbacks/208932.html</trackback:ping><description><![CDATA[本文来自:<font style="background-color: #c4ecc9">http://www.blogjava.net/improviser/archive/2007/10/01/150073.html</font><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;Oracle中提供了对表进行分区的机制，通过表分区，可以将表空间中数据按照某种方式分别存放到特定的分区中。<font size="4"><span style="font-family: 宋体"><font color="#0000ff">表分区的作用：</font><span style="color: red">平衡</span></span><span lang="EN-US" style="color: red">IO</span><span style="color: red; font-family: 宋体">操作，分区均匀，提高效率。<br />
<br />
&nbsp;&nbsp; <font color="#330000"><font color="#0000ff">Oracle中表分区方法有：范围分区法、散列分区法、复合分区法、列表分区法。<br />
<br />
</font>&nbsp;<font color="#000080"><strong>范围分区</strong>:</font></font></span><span style="font-family: 宋体"><font color="#000080">语法</font></span></font><font color="#000080" size="4"><span lang="EN-US" style="color: red"> Partition<span>&nbsp; </span>by<span>&nbsp; </span>range</span><span style="font-family: 宋体">(); </span><span lang="EN-US"></span></font><font color="#000080" size="4"><span style="font-family: 宋体">适合数值型或日期型</span></font><font size="4"><br />
&nbsp; </font><font color="#000080" size="4">示例：</font><br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,255)">create</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">&nbsp;Student<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span><span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Studentid&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">integer</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(128,128,128)">not</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">null</span><span style="color: rgb(0,0,0)">,<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Studentname&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar2</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Score&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">integer</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span><span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span>&nbsp;<span style="color: rgb(0,0,0)">Partition&nbsp;</span><span style="color: rgb(0,0,255)">by</span><span style="color: rgb(0,0,0)">&nbsp;range(Score)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span><span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;p1&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">&nbsp;less&nbsp;than(</span><span style="font-weight: bold; color: rgb(128,0,0)">60</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">10</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;p2&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">&nbsp;less&nbsp;than(</span><span style="font-weight: bold; color: rgb(128,0,0)">75</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">11</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;p3&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">&nbsp;less&nbsp;than(</span><span style="font-weight: bold; color: rgb(128,0,0)">85</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">12</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;p4&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">&nbsp;less&nbsp;than(maxvalue)<br />
</span><span style="color: rgb(0,128,128)">13</span> )<span style="color: rgb(0,0,0)">;</span></div>
<br />
<font color="#000080" size="4"><strong>&nbsp; 散列分区法：</strong></font><font color="#0000ff" size="4">根据Oracle内部散列算法存储，语法 Partition by hash();</font><font size="4"><br />
&nbsp; </font><font color="#000080" size="4">实例：</font><br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,255)">create</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">&nbsp;department<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Deptno&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">int</span><span style="color: rgb(0,0,0)">,<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Deptname&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar2</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">24</span><span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span>&nbsp;<span style="color: rgb(0,0,0)">Partition&nbsp;</span><span style="color: rgb(0,0,255)">by</span><span style="color: rgb(0,0,0)">&nbsp;hash(deptno)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;p1,<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;p2<br />
</span><span style="color: rgb(0,128,128)">10</span>&nbsp;<span style="color: rgb(0,0,0)">);</span></div>
<br />
<font size="4"><strong><font color="#000080">&nbsp; 复合分区法：</font></strong><font color="#0000ff">由上面两种方法复合而成</font><br />
<font color="#000080">&nbsp; 示例：</font></font><br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,255)">create</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">&nbsp;salgrade<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;grade&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">number</span><span style="color: rgb(0,0,0)">,<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;losal&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">number</span><span style="color: rgb(0,0,0)">,<br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;hisal&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">number</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span>&nbsp;<span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span>&nbsp;<span style="color: rgb(0,0,0)">Partition&nbsp;</span><span style="color: rgb(0,0,255)">by</span><span style="color: rgb(0,0,0)">&nbsp;range(grade)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span>&nbsp;<span style="color: rgb(0,0,0)">Subpartition&nbsp;</span><span style="color: rgb(0,0,255)">by</span><span style="color: rgb(0,0,0)">&nbsp;hash(losal,hisal)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">10</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;p1&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">&nbsp;less&nbsp;than(</span><span style="font-weight: bold; color: rgb(128,0,0)">10</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">11</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(subpartition&nbsp;sp1,subpartition&nbsp;sp2),<br />
</span><span style="color: rgb(0,128,128)">12</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;p2&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">&nbsp;less&nbsp;than(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">13</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(subpartition&nbsp;sp3,subpartition&nbsp;sp4)<br />
</span><span style="color: rgb(0,128,128)">14</span>&nbsp;<span style="color: rgb(0,0,0)">)</span></div>
<font size="4"><br />
</font><font color="#000080" size="4">&nbsp; </font><font color="#000080" size="4"><strong>列表分区法：</strong></font><font color="#0000ff" size="4">适合字符型 语法<font size="4"></font></font><font color="#000080" size="4"><span style="color: rgb(0,0,0)">Partition&nbsp;</span><span style="color: rgb(0,0,255)">by</span><span style="color: rgb(0,0,0)">&nbsp;list()</span></font><font size="4"><br />
&nbsp; <font color="#0000ff">实例：</font></font><br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,255)">create</span><span style="color: rgb(0,0,0)">&nbsp;</span><span style="color: rgb(0,0,255)">table</span><span style="color: rgb(0,0,0)">&nbsp;customer<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;custNo&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">int</span><span style="color: rgb(0,0,0)">,<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;custname&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;custState&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">20</span><span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span>&nbsp;<span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span>&nbsp;<span style="color: rgb(0,0,0)">Partition&nbsp;</span><span style="color: rgb(0,0,255)">by</span><span style="color: rgb(0,0,0)">&nbsp;list(custState)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span>&nbsp;<span style="color: rgb(0,0,0)">(<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;saia&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">(</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">中国</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">韩国</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">日本</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">10</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;Europe&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">(</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">英国</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">俄国</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">法国</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">11</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;Partition&nbsp;ameria&nbsp;</span><span style="color: rgb(0,0,255)">values</span><span style="color: rgb(0,0,0)">(</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">美国</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">加拿大</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">,</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">墨西哥</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(0,0,0)">),<br />
</span><span style="color: rgb(0,128,128)">12</span>&nbsp;<span style="color: rgb(0,0,0)">);<br />
</span><span style="color: rgb(0,128,128)">13</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<br />
<font color="#000080" size="4"><strong>表分区维护：<br />
<br />
</strong></font><font color="#0000ff" size="4">添加分区:alter table student add partition p5 values less than(120);<br />
删除分区:alter table student drop partition p4;<br />
截断分区:alter table student truncate partition p5;<br />
合并分区:alter table student merge partitions p3,p4 into partition p6;<br />
</font>
<img src ="http://www.blogjava.net/henry1451/aggbug/208932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/henry1451/" target="_blank">henry1451</a> 2008-06-18 17:28 <a href="http://www.blogjava.net/henry1451/articles/208932.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle之函数与触发器(转)</title><link>http://www.blogjava.net/henry1451/articles/208931.html</link><dc:creator>henry1451</dc:creator><author>henry1451</author><pubDate>Wed, 18 Jun 2008 09:23:00 GMT</pubDate><guid>http://www.blogjava.net/henry1451/articles/208931.html</guid><wfw:comment>http://www.blogjava.net/henry1451/comments/208931.html</wfw:comment><comments>http://www.blogjava.net/henry1451/articles/208931.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/henry1451/comments/commentRss/208931.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/henry1451/services/trackbacks/208931.html</trackback:ping><description><![CDATA[本文来自:<font style="background-color: #c4ecc9">http://www.blogjava.net/improviser/archive/2007/10/05/150456.html</font><br />
<br />
今天写有关Oracle中函数与触发器的内容，在数据库中定义并使用存储过程、函数、触发器，可以提高用户访问数据库的效率。<br />
<br />
&nbsp;&nbsp;&nbsp; 数据库中函数包含四个部分：<strong>声明、返回值、函数体和异常处理</strong>。<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span>&nbsp;<span style="color: rgb(0,0,255)">function</span><span style="color: rgb(0,0,0)">&nbsp;getname(sno&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar2</span><span style="color: rgb(0,0,0)">)<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;&nbsp;<span style="color: rgb(0,0,255)">return</span>&nbsp;<span style="font-weight: bold; color: rgb(0,0,0)">varchar</span>&nbsp;<span style="color: rgb(0,0,255)">is</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;</span><span style="font-weight: bold; color: rgb(0,0,0)">varchar</span><span style="color: rgb(0,0,0)">(</span><span style="font-weight: bold; color: rgb(128,0,0)">12</span><span style="color: rgb(0,0,0)">);<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;&nbsp;<span style="color: rgb(0,0,255)">begin</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">select</span><span style="color: rgb(0,0,0)">&nbsp;ename&nbsp;</span><span style="color: rgb(0,0,255)">into</span><span style="color: rgb(0,0,0)">&nbsp;name&nbsp;</span><span style="color: rgb(0,0,255)">from</span><span style="color: rgb(0,0,0)">&nbsp;emp&nbsp;</span><span style="color: rgb(0,0,255)">where</span><span style="color: rgb(0,0,0)">&nbsp;empno</span><span style="color: rgb(128,128,128)">=</span><span style="color: rgb(0,0,0)">sno;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">return</span><span style="color: rgb(0,0,0)">&nbsp;name;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;exception<br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">12</span>&nbsp;&nbsp;<span style="color: rgb(0,0,255)">end</span><span style="color: rgb(0,0,0)">;<br />
</span><span style="color: rgb(0,128,128)">13</span>&nbsp;</div>
<br />
&nbsp;&nbsp;&nbsp;<font size="4"><font color="#000080">触发器是一种特殊的存储过程，类似于其它编程语言中的事件函数，允许为 INSERT、UPDATE、DELETE 创建触发器，当在表（视图）中插入、更新、删除记录(前、后)时，触发一个或一系列 T-SQL 语句。</font><span style="color: blue; font-family: 宋体"><br />
<br />
&nbsp; &nbsp; 创建在</span><span style="color: blue">STUDENT</span><span style="color: blue; font-family: 宋体">表上的插入触发器，当在</span><span style="color: blue">STUDENT</span><span style="color: blue; font-family: 宋体">表中插入数据时候触发器将被触发，执行体将被执行</span></font>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">&nbsp;&nbsp; 插入触发器<br />
&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span>&nbsp;<span style="color: rgb(0,0,255)">trigger</span><span style="color: rgb(0,0,0)">&nbsp;tg_insert<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;before&nbsp;</span><span style="color: rgb(0,0,255)">insert</span>&nbsp;<span style="color: rgb(0,0,255)">on</span><span style="color: rgb(0,0,0)">&nbsp;student&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: rgb(128,128,128)">－－</span><span style="color: rgb(0,0,0)">可设置在插入前或插入后<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;&nbsp;<span style="color: rgb(0,0,255)">begin</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;&nbsp;<span style="color: rgb(0,0,255)">end</span><span style="color: rgb(0,0,0)">;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;<br />
<br />
</span><span style="color: rgb(0,128,128)">&nbsp;&nbsp; </span><span style="color: rgb(0,0,0)">更新触发器<br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span>&nbsp; <span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span>&nbsp;<span style="color: rgb(0,0,255)">trigger</span><span style="color: rgb(0,0,0)">&nbsp;tg_update<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;after&nbsp;</span><span style="color: rgb(0,0,255)">update</span>&nbsp;<span style="color: rgb(0,0,255)">on</span><span style="color: rgb(0,0,0)">&nbsp;student<br />
</span><span style="color: rgb(0,128,128)">10</span>&nbsp;&nbsp;<span style="color: rgb(0,0,255)">for</span><span style="color: rgb(0,0,0)">&nbsp;each&nbsp;row </span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">12</span>&nbsp;&nbsp;<span style="color: rgb(0,0,255)">begin</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">13</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp; ...</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">14</span>&nbsp;&nbsp;<span style="color: rgb(0,0,255)">END</span><span style="color: rgb(0,0,0)">;<br />
</span><span style="color: rgb(0,128,128)">15</span>&nbsp;</div>
<br />
<p style="margin-left: 21pt"><font size="4"><strong><span style="color: blue; font-family: 宋体">触发器两个特殊行级变量：</span><span style="color: red"> :New</span></strong><strong><span style="color: blue; font-family: 宋体">新值</span><span style="color: blue">&nbsp;</span></strong><strong><span style="color: blue; font-family: 宋体">和</span><span style="color: blue">&nbsp;</span><span style="color: red">:Old</span></strong><strong><span style="color: blue; font-family: 宋体">旧值</span><span style="color: blue">&nbsp;</span></strong><strong><span style="color: blue; font-family: 宋体">分别代表更新值，被更新的值</span></strong></font></p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span>&nbsp;<span style="color: rgb(0,0,255)">trigger</span><span style="color: rgb(0,0,0)">&nbsp;tg_insert<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;<span style="color: rgb(0,0,0)">after&nbsp;</span><span style="color: rgb(0,0,255)">update</span>&nbsp;<span style="color: rgb(0,0,255)">on</span><span style="color: rgb(0,0,0)">&nbsp;student<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,255)">for</span><span style="color: rgb(0,0,0)">&nbsp;each&nbsp;row<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,255)">when</span><span style="color: rgb(0,0,0)">&nbsp;(:old.sex</span><span style="color: rgb(128,128,128)">=</span><span style="color: rgb(0,0,0)">&#8217;j&#8217;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; －－</span><span style="color: rgb(0,0,0)">当old.sex为J时候才执行触发器内容<br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,255)">begin</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;7</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;DBMS_OUTPUT.PUT_LINE(:new.stuname</span><span style="color: rgb(128,128,128)">||</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(128,128,128)">||</span><span style="color: rgb(0,0,0)">:old.stuname);<br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;DBMS_OUTPUT.PUT_LINE(:new.sex</span><span style="color: rgb(128,128,128)">||</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(255,0,0)">&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">'</span><span style="color: rgb(128,128,128)">||</span><span style="color: rgb(0,0,0)">:old.sex);<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span>&nbsp;<span style="color: rgb(0,0,255)">end</span><span style="color: rgb(0,0,0)">;<br />
</span><span style="color: rgb(0,128,128)">10</span>&nbsp;</div>
<br />
<p style="margin-left: 21pt"><font size="4"><strong><span style="color: blue; font-family: 宋体">判断复合型触发器</span></strong></font></p>
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 98%; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><span style="color: rgb(0,128,128)">&nbsp;1</span>&nbsp;<span style="color: rgb(0,0,255)">create</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(255,0,255)">replace</span>&nbsp;<span style="color: rgb(0,0,255)">trigger</span><span style="color: rgb(0,0,0)">&nbsp;trgstudeng<br />
</span><span style="color: rgb(0,128,128)">&nbsp;2</span>&nbsp;<span style="color: rgb(0,0,0)">before&nbsp;</span><span style="color: rgb(0,0,255)">insert</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(0,0,255)">update</span>&nbsp;<span style="color: rgb(128,128,128)">or</span>&nbsp;<span style="color: rgb(0,0,255)">delete</span>&nbsp;<span style="color: rgb(0,0,255)">on</span><span style="color: rgb(0,0,0)">&nbsp;student<br />
</span><span style="color: rgb(0,128,128)">&nbsp;3</span>&nbsp;<span style="color: rgb(0,0,255)">for</span><span style="color: rgb(0,0,0)">&nbsp;each&nbsp;row<br />
</span><span style="color: rgb(0,128,128)">&nbsp;4</span>&nbsp;<span style="color: rgb(0,0,255)">begin</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;5</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;&nbsp;inserting&nbsp;</span><span style="color: rgb(0,0,255)">then</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;6</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp; ...</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">&nbsp;8</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">end</span>&nbsp;<span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">;<br />
</span><span style="color: rgb(0,128,128)">&nbsp;9</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">&nbsp;deleting&nbsp;</span><span style="color: rgb(0,0,255)">then</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">10</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp; ...</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">12</span>&nbsp;<span style="color: rgb(0,0,0)">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">end</span>&nbsp;<span style="color: rgb(0,0,255)">if</span><span style="color: rgb(0,0,0)">;<br />
</span><span style="color: rgb(0,128,128)">13</span>&nbsp;<span style="color: rgb(0,0,0)">exception<br />
</span><span style="color: rgb(0,128,128)">14</span>&nbsp;<span style="color: rgb(0,0,0)"> &nbsp;&nbsp; ...</span><span style="color: rgb(0,0,0)"><br />
</span><span style="color: rgb(0,128,128)">16</span>&nbsp;<span style="color: rgb(0,0,255)">END</span><span style="color: rgb(0,0,0)">;<br />
</span><span style="color: rgb(0,128,128)">17</span>&nbsp;</div>
<br />
&nbsp;<font color="#000080" size="4">&nbsp; 触发器功能强大，可以实现许多复杂的功能，但如果滥用会造成数据库及应用程序的维护困难。<br />
</font>
<img src ="http://www.blogjava.net/henry1451/aggbug/208931.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/henry1451/" target="_blank">henry1451</a> 2008-06-18 17:23 <a href="http://www.blogjava.net/henry1451/articles/208931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jdbc连接Oracle常见错误汇总</title><link>http://www.blogjava.net/henry1451/articles/205162.html</link><dc:creator>henry1451</dc:creator><author>henry1451</author><pubDate>Sun, 01 Jun 2008 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/henry1451/articles/205162.html</guid><wfw:comment>http://www.blogjava.net/henry1451/comments/205162.html</wfw:comment><comments>http://www.blogjava.net/henry1451/articles/205162.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/henry1451/comments/commentRss/205162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/henry1451/services/trackbacks/205162.html</trackback:ping><description><![CDATA[<br />
&nbsp;&nbsp;&nbsp;&nbsp;在开发JAVA应用程序时,连接数据库是必不可少的一环,如果是WEB应用程序,则可以采用数据库连接池等形式连接数据库,如果是应用程序,则采用JDBC的形式较多,下面介绍下常见的错误及处理方法:<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;注:正确连接Oracle的方式是:<font style="background-color: #c4ecc9">DriverManager.getConnection("jdbc:oracle:thin:@serverNameOrIp:1521:sid","username","password"); </font><br />
<br />
1)<font style="background-color: #c4ecc9">java.sql.SQLException: No suitable driver</font><br />
处理方法:一般是没有加入数据库驱动,或"jdbc:oracle"格式写错.<br />
<br />
2)<font style="background-color: #c4ecc9">java.sql.SQLException: 指定了无效的 Oracle URL</font><br />
处理方法:一般是jdbc:oracle:thin格式写错,如没写入:thin,或内容写错.或@后面的服务器名(或IP)写错,或端口(1521)写错.<br />
<br />
3)Connection refused(DESCRIPTION=(TMP=)(VSNNUM=150999297)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))......<br />
处理方法:一般是数据库实例ID写错,填写正确的SID即可解决问题.<br />
<br />
<img src ="http://www.blogjava.net/henry1451/aggbug/205162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/henry1451/" target="_blank">henry1451</a> 2008-06-01 16:36 <a href="http://www.blogjava.net/henry1451/articles/205162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于oracle模糊查询like中的关键字</title><link>http://www.blogjava.net/henry1451/articles/204864.html</link><dc:creator>henry1451</dc:creator><author>henry1451</author><pubDate>Sat, 31 May 2008 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/henry1451/articles/204864.html</guid><wfw:comment>http://www.blogjava.net/henry1451/comments/204864.html</wfw:comment><comments>http://www.blogjava.net/henry1451/articles/204864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/henry1451/comments/commentRss/204864.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/henry1451/services/trackbacks/204864.html</trackback:ping><description><![CDATA[<br />
&nbsp;&nbsp;&nbsp;&nbsp;在进行模糊查询时,一般使用的形式是 like 'key%',like '%key',like '%key%' 等几种形式,其中key一般是固定的值,这样从数据库表中查出所需的数据,但最近做的一个任务中有这样的一需求,即key是变化的,根据不同的条件获取不同的key值做为like中的条件,来获取所需的数据,想了一下,需要用到oracle中的字符串连接符:|| ,如下:<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp; ue.</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp; </span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">user</span><span style="color: #000000">&nbsp;ue&nbsp;</span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;&nbsp;name&nbsp;</span><span style="color: #808080">LIKE</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">''</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">||</span><span style="color: #000000">&nbsp;(&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;username&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;student&nbsp;st&nbsp;</span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;st.stud_id</span><span style="color: #808080">=</span><span style="color: #ff0000">'</span><span style="color: #ff0000">1003</span><span style="color: #ff0000">'</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">||</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">%</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span></div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;user是一张记录所有用户名等其他比较全的数据,然后根据学生ID查询学生姓名,因为可能会有姓名相同的学生,所以用此方法可以查询出user表中所有姓名相似(如有王小和王小华,王小兵三个学生,而ID为1003的学生为王小,则这条语句就可以查出这三个人的相关数据).<br />
当然这里只是举的一个简单例子,我相信实际的生产应用中是存在这样的需求的,这里重要是介绍这种SQL语句的写法,却确的说是关于like的写法,即用oracle的连接符来完成.<br />
&nbsp;&nbsp;&nbsp;&nbsp;即:前面两个引号的作用是生成一个引号,||是字符串连接符,用来连接<span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;username&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;student&nbsp;st&nbsp;</span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;st.stud_id</span><span style="color: #808080">=</span><span style="color: #ff0000">1003</span><span style="color: #ff0000">' 语句查询得到的字符串,后面的||是用来连接%的,最后得到的语句大至如: <br />
like 'aaa%' 的形式.即实现key关键字动态变化的模糊查询.</span>
<img src ="http://www.blogjava.net/henry1451/aggbug/204864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/henry1451/" target="_blank">henry1451</a> 2008-05-31 17:18 <a href="http://www.blogjava.net/henry1451/articles/204864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle中实现表ID自动增长</title><link>http://www.blogjava.net/henry1451/articles/204711.html</link><dc:creator>henry1451</dc:creator><author>henry1451</author><pubDate>Sat, 31 May 2008 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/henry1451/articles/204711.html</guid><wfw:comment>http://www.blogjava.net/henry1451/comments/204711.html</wfw:comment><comments>http://www.blogjava.net/henry1451/articles/204711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/henry1451/comments/commentRss/204711.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/henry1451/services/trackbacks/204711.html</trackback:ping><description><![CDATA[<br />
&nbsp;&nbsp;&nbsp;&nbsp;mysql等其他数据库中有随着记录的插入而表ID自动增长的功能,而<font style="background-color: #c4ecc9">oracle</font>却没有这样的功能,但我们可以用序列和触发器来实现这样的功能.<br />
<br />
一)建立序列:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;sequence&nbsp;SMSLOG_SEQ<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />minvalue&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />maxvalue&nbsp;</span><span style="font-weight: bold; color: #800000">999999999999999999</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />start&nbsp;</span><span style="color: #0000ff">with</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">601</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />increment&nbsp;</span><span style="color: #0000ff">by</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />cache&nbsp;</span><span style="font-weight: bold; color: #800000">20</span><span style="color: #000000">;</span></div>
二)建立触发器:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">CREATE</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">OR</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">REPLACE</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">TRIGGER</span><span style="color: #000000">&nbsp;"smslog_trig"<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;BEFORE&nbsp;</span><span style="color: #0000ff">INSERT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">ON</span><span style="color: #000000">&nbsp;smslog<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;REFERENCING&nbsp;OLD&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;OLD&nbsp;NEW&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;NEW&nbsp;</span><span style="color: #0000ff">FOR</span><span style="color: #000000">&nbsp;EACH&nbsp;ROW&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">DECLARE</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">BEGIN</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;smslog_seq.NEXTVAL&nbsp;</span><span style="color: #0000ff">INTO</span><span style="color: #000000">&nbsp;:NEW.ID&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;DUAL;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">END</span><span style="color: #000000">&nbsp;smslog_trig;</span></div>
三)建立表:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">&nbsp;SMSLOG<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />(<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">NUMBER</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">not</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;USERID&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">NUMBER</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;USERNAME&nbsp;</span><span style="font-weight: bold; color: #000000">VARCHAR2</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">200</span><span style="color: #000000">),<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;DEPTID&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #000000">NUMBER</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />)</span></div>
<br />
这样在执行: insert into smslog(userid,username,deptid) values('001','aaa','1001');时将会自动给ID自动赋值1,每插入一条记录,ID的值会增加1.<br />
<br />
注:以上序列,触发器等在PL/SQL工具中建立很容易,但如果是在命令行中创建,则语句最后要是"/",即执行的意思,而不是";",<br />
如创建触发器,命令为:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">CREATE</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">OR</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">REPLACE</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">TRIGGER</span><span style="color: #000000">&nbsp;"smslog_trig"<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;BEFORE&nbsp;</span><span style="color: #0000ff">INSERT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">ON</span><span style="color: #000000">&nbsp;smslog<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;REFERENCING&nbsp;OLD&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;OLD&nbsp;NEW&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;NEW&nbsp;</span><span style="color: #0000ff">FOR</span><span style="color: #000000">&nbsp;EACH&nbsp;ROW&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">DECLARE</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">BEGIN</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;smslog_seq.NEXTVAL&nbsp;</span><span style="color: #0000ff">INTO</span><span style="color: #000000">&nbsp;:NEW.ID&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;DUAL;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">END</span><span style="color: #000000">&nbsp;smslog_trig;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #808080">/</span></div>
<img src ="http://www.blogjava.net/henry1451/aggbug/204711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/henry1451/" target="_blank">henry1451</a> 2008-05-31 16:19 <a href="http://www.blogjava.net/henry1451/articles/204711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库查询的优化——索引使用的注意点(转)</title><link>http://www.blogjava.net/henry1451/articles/203224.html</link><dc:creator>henry1451</dc:creator><author>henry1451</author><pubDate>Tue, 27 May 2008 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/henry1451/articles/203224.html</guid><wfw:comment>http://www.blogjava.net/henry1451/comments/203224.html</wfw:comment><comments>http://www.blogjava.net/henry1451/articles/203224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/henry1451/comments/commentRss/203224.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/henry1451/services/trackbacks/203224.html</trackback:ping><description><![CDATA[<br />
<h1 style="margin: 17pt 0cm 16.5pt"><font size="2"><span style="font-size: 10.5pt; line-height: 240%; font-family: 宋体">索引使用的注意点</span> </font></h1>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">1)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">合理使用索引</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">索引是数据库中重要的数据结构，它的根本目的就是为了提高查询效率。现在大多数的数据库产品都采用</span> <span style="color: black; font-family: 宋体">IBM</span> <span style="color: black; font-family: 宋体">最先提出的</span> <span style="color: black; font-family: 宋体">ISAM</span> <span style="color: black; font-family: 宋体">索引结构。索引的使用要恰到好处，其使用原则如下：</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">●在经常进行连接，但是没有指定为外键的列上建立索引，而不经常连接的字段则由优化器自动生成索引。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">●在频繁进行排序或分组（即进行</span> <span style="color: black; font-family: 宋体">group by</span> <span style="color: black; font-family: 宋体">或</span> <span style="color: black; font-family: 宋体">order by</span> <span style="color: black; font-family: 宋体">操作）的列上建立索引。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">●在条件表达式中经常用到的不同值较多的列上建立检索，在不同值少的列上不要建立索引。比如在雇员表的&#8220;性别&#8221;列上只有&#8220;男&#8221;与&#8220;女&#8221;两个不同值，因此就无必要建立索引。如果建立索引不但不会提高查询效率，反而会严重降低更新速度。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">●如果待排序的列有多个，可以在这些列上建立复合索引（</span> <span style="color: black; font-family: 宋体">compound index</span> <span style="color: black; font-family: 宋体">）。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">●使用系统工具。如</span> <span style="color: black; font-family: 宋体">Informix</span> <span style="color: black; font-family: 宋体">数据库有一个</span> <span style="color: black; font-family: 宋体">tbcheck</span> <span style="color: black; font-family: 宋体">工具，可以在可疑的索引上进行检查。在一些数据库服务器上，索引可能失效或者因为频繁操作而使得读取效率降低，如果一个使用索引的查询不明不白地慢下来，可以试着用</span> <span style="color: black; font-family: 宋体">tbcheck</span> <span style="color: black; font-family: 宋体">工具检查索引的完整性，必要时进行修复。另外，当数据库表更新大量数据后，删除并重建索引可以提高查询速度。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">2)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">避免或简化排序</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">应当简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生输出时，优化器就避免了排序的步骤。以下是一些影响因素：</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">●索引中不包括一个或几个待排序的列；</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">●</span> <span style="color: black; font-family: 宋体">group by</span> <span style="color: black; font-family: 宋体">或</span> <span style="color: black; font-family: 宋体">order by</span> <span style="color: black; font-family: 宋体">子句中列的次序与索引的次序不一样；</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">●排序的列来自不同的表。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">为了避免不必要的排序，就要正确地增建索引，合理地合并数据库表（尽管有时可能影响表的规范化，但相对于效率的提高是值得的）。如果排序不可避免，那么应当试图简化它，如缩小排序的列的范围等。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">3)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">消除对大型表行数据的顺序存取</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">在嵌套查询中，对表的顺序存取对查询效率可能产生致命的影响。比如采用顺序存取策略，一个嵌套</span> <span style="color: black; font-family: 宋体">3</span> <span style="color: black; font-family: 宋体">层的查询，如果每层都查询</span> <span style="color: black; font-family: 宋体">1000</span> <span style="color: black; font-family: 宋体">行，那么这个查询就要查询</span> <span style="color: black; font-family: 宋体">10</span> <span style="color: black; font-family: 宋体">亿行数据。避免这种情况的主要方法就是对连接的列进行索引。例如，两个表：学生表（学号、姓名、年龄&#8230;&#8230;）和选课表（学号、课程号、成绩）。如果两个表要做连接，就要在&#8220;学号&#8221;这个连接字段上建立索引。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">还可以使用并集来避免顺序存取。尽管在所有的检查列上都有索引，但某些形式的</span> <span style="color: black; font-family: 宋体">where</span> <span style="color: black; font-family: 宋体">子句强迫优化器使用顺序存取。下面的查询将强迫对</span> <span style="color: black; font-family: 宋体">orders</span> <span style="color: black; font-family: 宋体">表执行顺序操作：</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">SELECT </span><span style="color: black; font-family: 宋体">＊</span> <span style="color: black; font-family: 宋体">FROM orders WHERE (customer_num=104 AND order_num&gt;1001) OR order_num=1008 </span></font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">虽然在</span> <span style="color: black; font-family: 宋体">customer_num</span> <span style="color: black; font-family: 宋体">和</span> <span style="color: black; font-family: 宋体">order_num</span> <span style="color: black; font-family: 宋体">上建有索引，但是在上面的语句中优化器还是使用顺序存取路径扫描整个表。因为这个语句要检索的是分离的行的集合，所以应该改为如下语句：</span> </font></p>
<p style="margin: 0cm 0cm 0pt"><font size="2">SELECT <span style="font-family: 宋体">＊</span> FROM orders WHERE customer_num=104 AND order_num&gt;1001 </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">UNION</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">SELECT </span><span style="color: black; font-family: 宋体">＊</span> <span style="color: black; font-family: 宋体">FROM orders WHERE order_num=1008 </span></font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">这样就能利用索引路径处理查询。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">4)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">避免相关子查询</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">一个列的标签同时在主查询和</span> <span style="color: black; font-family: 宋体">where</span> <span style="color: black; font-family: 宋体">子句中的查询中出现，那么很可能当主查询中的列值改变之后，子查询必须重新查询一次。查询嵌套层次越多，效率越低，因此应当尽量避免子查询。如果子查询不可避免，那么要在子查询中过滤掉尽可能多的行。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">5)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">避免困难的正规表达式</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">MATCHES</span> <span style="color: black; font-family: 宋体">和</span> <span style="color: black; font-family: 宋体">LIKE</span> <span style="color: black; font-family: 宋体">关键字支持通配符匹配，技术上叫正规表达式。但这种匹配特别耗费时间。例如：</span> <span style="color: black; font-family: 宋体">SELECT </span><span style="color: black; font-family: 宋体">＊</span> <span style="color: black; font-family: 宋体">FROM customer WHERE zipcode LIKE </span><span style="color: black; font-family: 宋体">&#8220;</span> <span style="color: black; font-family: 宋体">98_ _ _</span> <span style="color: black; font-family: 宋体">&#8221;</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">即使在</span> <span style="color: black; font-family: 宋体">zipcode</span> <span style="color: black; font-family: 宋体">字段上建立了索引，在这种情况下也还是采用顺序扫描的方式。如果把语句改为</span> <span style="color: black; font-family: 宋体">SELECT </span><span style="color: black; font-family: 宋体">＊</span> <span style="color: black; font-family: 宋体">FROM customer WHERE zipcode &gt;</span> <span style="color: black; font-family: 宋体">&#8220;</span> <span style="color: black; font-family: 宋体">98000</span> <span style="color: black; font-family: 宋体">&#8221;，在执行查询时就会利用索引来查询，显然会大大提高速度。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">另外，还要避免非开始的子串。例如语句：</span> <span style="color: black; font-family: 宋体">SELECT </span><span style="color: black; font-family: 宋体">＊</span> <span style="color: black; font-family: 宋体">FROM customer WHERE zipcode[2</span> <span style="color: black; font-family: 宋体">，</span> <span style="color: black; font-family: 宋体">3] &gt;</span> <span style="color: black; font-family: 宋体">&#8220;</span> <span style="color: black; font-family: 宋体">80</span> <span style="color: black; font-family: 宋体">&#8221;，在</span> <span style="color: black; font-family: 宋体">where</span> <span style="color: black; font-family: 宋体">子句中采用了非开始子串，因而这个语句也不会使用索引。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">6)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">使用临时表加速查询</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">把表的一个子集进行排序并创建临时表，有时能加速查询。它有助于避免多重排序操作，而且在其他方面还能简化优化器的工作。例如：</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">SELECT cust.name</span> <span style="color: black; font-family: 宋体">，</span> <span style="color: black; font-family: 宋体">rcvbles.balance</span> <span style="color: black; font-family: 宋体">，&#8230;&#8230;</span> <span style="color: black; font-family: 宋体">other columns </span></font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">FROM cust</span> <span style="color: black; font-family: 宋体">，</span> <span style="color: black; font-family: 宋体">rcvbles </span></font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">WHERE cust.customer_id = rcvlbes.customer_id </font></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">AND rcvblls.balance&gt;0 </font></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">AND cust.postcode&gt;&#8220;98000&#8221; </font></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">ORDER BY cust.name </font></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">如果这个查询要被执行多次而不止一次，可以把所有未付款的客户找出来放在一个临时文件中，并按客户的名字进行排序：</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">SELECT cust.name</span> <span style="color: black; font-family: 宋体">，</span> <span style="color: black; font-family: 宋体">rcvbles.balance</span> <span style="color: black; font-family: 宋体">，&#8230;&#8230;</span> <span style="color: black; font-family: 宋体">other columns </span></font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">FROM cust</span> <span style="color: black; font-family: 宋体">，</span> <span style="color: black; font-family: 宋体">rcvbles </span></font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">WHERE cust.customer_id = rcvlbes.customer_id </font></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">AND rcvblls.balance&gt;0 </font></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">ORDER BY cust.name </font></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">INTO TEMP cust_with_balance </font></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">然后以下面的方式在临时表中查询：</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">SELECT </span><span style="color: black; font-family: 宋体">＊</span> <span style="color: black; font-family: 宋体">FROM cust_with_balance </span></font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">WHERE postcode&gt;&#8220;98000&#8221; </font></span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">临时表中的行要比主表中的行少，而且物理顺序就是所要求的顺序，减少了磁盘</span> <span style="color: black; font-family: 宋体">I/O</span> <span style="color: black; font-family: 宋体">，所以查询工作量可以得到大幅减少。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">注意：临时表创建后不会反映主表的修改。在主表中数据频繁修改的情况下，注意不要丢失数据。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">7)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">用排序来取代非顺序存取</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">非顺序磁盘存取是最慢的操作，表现在磁盘存取臂的来回移动。</span> <span style="color: black; font-family: 宋体">SQL</span> <span style="color: black; font-family: 宋体">语句隐藏了这一情况，使得我们在写应用程序时很容易写出要求存取大量非顺序页的查询。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">有些时候，用数据库的排序能力来替代非顺序的存取能改进查询。</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">&nbsp;</font> </span></p>
<h1 style="margin: 17pt 0cm 16.5pt"><span style="font-size: 10.5pt; line-height: 240%; font-family: 宋体"><font size="2">优化SQL语句</font> </span></h1>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">&nbsp;</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">优化就是选择最有效的方法来执行</span> <span style="color: black; font-family: 宋体">SQL</span> <span style="color: black; font-family: 宋体">语句。</span> <span style="color: black; font-family: 宋体">Oracle</span> <span style="color: black; font-family: 宋体">优化器选择它认为最有效的方法来执行</span> <span style="color: black; font-family: 宋体">SQL</span> <span style="color: black; font-family: 宋体">语句。</span> <span style="color: black; font-family: 宋体">　</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">1)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">IS NULL</span> <span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">和</span> <span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">IS NOT NULL</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">如果某列存在</span> <span style="color: black; font-family: 宋体">NULL</span> <span style="color: black; font-family: 宋体">值，即使对该列建立索引也不会提高性能。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">2)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">为不同的工作编写不同的SQL语句块。</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">为完成不同的工作编写一大块</span> <span style="color: black; font-family: 宋体">SQL</span> <span style="color: black; font-family: 宋体">程序不是好方法。它往往导致每个任务的结果不优</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">化。若要</span> <span style="color: black; font-family: 宋体">SQL</span> <span style="color: black; font-family: 宋体">完成不同的工作，一般应编写不同的语句块比编写一个要好。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">3)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">IN 和EXISTS</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">Select name from employee where name not in (select name from student);</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">Select name from employee where not exists (select name from student);</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">第一句</span> <span style="color: black; font-family: 宋体">SQL</span> <span style="color: black; font-family: 宋体">语句的执行效率不如第二句。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">通过使用</span> <span style="color: black; font-family: 宋体">EXISTS</span> <span style="color: black; font-family: 宋体">，</span> <span style="color: black; font-family: 宋体">Oracle</span> <span style="color: black; font-family: 宋体">会首先检查主查询，然后运行子查询直到它找到第一个匹配</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">项，这就节省了时间。</span> <span style="color: black; font-family: 宋体">Oracle</span> <span style="color: black; font-family: 宋体">在执行</span> <span style="color: black; font-family: 宋体">IN</span> <span style="color: black; font-family: 宋体">子查询时，首先执行子查询，并将获得的结果</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">列表存放在一个加了索引的临时表中。在执行子查询之前，系统先将主查询挂起，待</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">子查询执行完毕，存放在临时表中以后再执行主查询。这也就是使用</span> <span style="color: black; font-family: 宋体">EXISTS</span> <span style="color: black; font-family: 宋体">比使用</span> <span style="color: black; font-family: 宋体">IN</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">通常查询速度快的原因。</font> </span></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">4)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">NOT 运算符</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">Select * from employee where salary&lt;&gt;1000;</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">Select * from employee where salary&lt;1000 or salary&gt;1000;</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">第一句</span> <span style="color: black; font-family: 宋体">SQL</span> <span style="color: black; font-family: 宋体">语句的执行效率不如第二句，因为第二句</span> <span style="color: black; font-family: 宋体">SQL</span> <span style="color: black; font-family: 宋体">语句可以使用索引。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">5)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">Order By 语句</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">Order By </span><span style="color: black; font-family: 宋体">语句的执行效率很低，因为它要排序。应避免在</span> <span style="color: black; font-family: 宋体">Order By </span><span style="color: black; font-family: 宋体">字句中使用表达式。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">6)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">列的连接</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">select * from employee where name||department=&#8217;ZYZBIOINFO&#8217;;</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">select * from employee where name=&#8217;ZYZ&#8217; and department=&#8217;BIOINFO&#8217;;</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">这两个查询，第二句比第一句会快，因为对于有连接运算符&#8217;</span> <span style="color: black; font-family: 宋体">||</span> <span style="color: black; font-family: 宋体">&#8217;的查询</span> <span style="color: black; font-family: 宋体">,Oracle</span> <span style="color: black; font-family: 宋体">优化器是不</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">会使用索引的。</font> </span></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">7)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">通配符&#8216;％&#8217;当通配符出现在搜索词首时，Oracle优化器不使用索引。</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">Select * from employee where name like &#8216;%Z%&#8217;;</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">Select * from employee where name like &#8216;Z%&#8217;;</font> </span></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><span style="color: black; font-family: 宋体"><font size="2">第二句的执行效率会比第一句快，但查询结果集可能会不同。</font> </span></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">8)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">应尽量避免混合类型的表达式。</span> </font></h2>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">假设字段</span> <span style="color: black; font-family: 宋体">studentno</span> <span style="color: black; font-family: 宋体">为</span> <span style="color: black; font-family: 宋体">VARCHAR2</span> <span style="color: black; font-family: 宋体">类型</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">有语句</span> <span style="color: black; font-family: 宋体">select * from student where studentno&gt;123;</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">则</span> <span style="color: black; font-family: 宋体">Oracle</span> <span style="color: black; font-family: 宋体">会有一个隐含的类型转换。隐含的类型转换可能会使</span> <span style="color: black; font-family: 宋体">Oracle</span> <span style="color: black; font-family: 宋体">优化器忽略索引。</span> </font></p>
<p style="margin: 0cm 0cm 0pt; line-height: 12pt"><font size="2"><span style="color: black; font-family: 宋体">这时应使用显式的类型转换</span> <span style="color: black; font-family: 宋体">select * from student where studentno=to_char(123)</span> <span style="color: black; font-family: 宋体">。</span> </font></p>
<h2 style="margin: 13pt 0cm 13pt 21pt; text-indent: -21pt"><font size="2"><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">9)<span style="font: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10.5pt; line-height: 173%; font-family: 宋体">DISTINCT</span> </font></h2>
<font size="2"><span style="color: black; font-family: 宋体">　　 DISTINCT</span> <span style="color: black; font-family: 宋体">总是建立一个排序，所以查询速度也慢。</span></font>
<img src ="http://www.blogjava.net/henry1451/aggbug/203224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/henry1451/" target="_blank">henry1451</a> 2008-05-27 14:57 <a href="http://www.blogjava.net/henry1451/articles/203224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle简单基本操作</title><link>http://www.blogjava.net/henry1451/articles/201238.html</link><dc:creator>henry1451</dc:creator><author>henry1451</author><pubDate>Sun, 18 May 2008 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/henry1451/articles/201238.html</guid><wfw:comment>http://www.blogjava.net/henry1451/comments/201238.html</wfw:comment><comments>http://www.blogjava.net/henry1451/articles/201238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/henry1451/comments/commentRss/201238.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/henry1451/services/trackbacks/201238.html</trackback:ping><description><![CDATA[<br />
以下记录了一些oracler&nbsp;操作相关(以&nbsp;用户名：fzsi;密码：fzsi;连接串：si&nbsp;为例) <br />
<br />
1.导出所有表：exp&nbsp;fzsi/fzsi@si&nbsp;file=路径名&nbsp;file=目标文件.dmp <br />
&nbsp;&nbsp;导出单个表：exp&nbsp;fzsi/fzsi@si&nbsp;tables=表名1，表名2，&#8230;&#8230;&nbsp;&nbsp;file=路&nbsp;&nbsp;径名&nbsp;file=目标文件.dmp(dos下命令) <br />
<br />
2.查用户：select&nbsp;*&nbsp;from&nbsp;all_users,查表：select&nbsp;*&nbsp;from&nbsp;tab; <br />
<br />
3.建立新用户：create&nbsp;user&nbsp;fzsi(用户名)&nbsp;identified&nbsp;by&nbsp;fzsi(密码)&nbsp;default&nbsp;&nbsp;&nbsp;tablespace&nbsp;users&nbsp;temporary&nbsp;tablespace&nbsp;temp; <br />
<br />
4.给用户赋权限：grant&nbsp;connect,resource&nbsp;to&nbsp;fzsi(用户名);(连接权限)&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grant&nbsp;dba&nbsp;to&nbsp;fzsi(用户名)；(最高权限) <br />
<br />
5.导入表：imp&nbsp;fzsi/fzsi&nbsp;fromuser=fzsi&nbsp;touser=fzsi&nbsp;file=备份文件.dmp;(dos下命令) <br />
<br />
6.删用户：drop&nbsp;user&nbsp;fzsi&nbsp;cascade; <br />
<br />
7.查表内容：select&nbsp;*&nbsp;from&nbsp;表名； <br />
&nbsp;&nbsp;查表中数据个数：select&nbsp;count(*)&nbsp;from&nbsp;表名； <br />
<br />
8.查看表名：select&nbsp;*&nbsp;from&nbsp;tab; <br />
<br />
9.修改hosnumgrade(表名)中数据：update&nbsp;hosnumgrade&nbsp;set&nbsp;akb020&nbsp;=&nbsp;'fz0102',akb021&nbsp;=&nbsp;'抚州市第二医院'，aka=改动后的编号，zkc=改动后的编号; <br />
&nbsp;&nbsp;提交：commit <br />
<br />
10.当前命令行可在文本文件中编辑后再放进来：edit; <br />
<br />
11.连接表：connce&nbsp;fzsi/fzsi;&nbsp;<br />
<br />
12.查找表的列名：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1)select&nbsp;&nbsp;&nbsp;column_name&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;dba_tab_columns&nbsp;&nbsp;&nbsp;where&nbsp;&nbsp;&nbsp;table_name='你的大写表名';&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dba_tab_columns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2)select&nbsp;&nbsp;&nbsp;column_name&nbsp;&nbsp;&nbsp;from&nbsp;&nbsp;&nbsp;user_tab_columns&nbsp;&nbsp;&nbsp;where&nbsp;&nbsp;&nbsp;table_name='AUCLOT';&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user_tab_columns&nbsp;&nbsp;&nbsp; 表里的是本用户的表<br />
&nbsp;&nbsp;&nbsp;&nbsp; 3)select&nbsp;column_name&nbsp;from&nbsp;all_tab_columns&nbsp;where&nbsp;table_name='A';&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all_tab_columns&nbsp;&nbsp;&nbsp;&nbsp;表里的是所有你可以访问的表<br />
13.查表空间中表和表名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="verdana, arial, helvetica" size="2"><span class="javascript" id="text1312501" style="font-size: 12px">SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLESPACE_NAME='EXAMPLES'</span></font>&nbsp;&nbsp;&nbsp;&nbsp; <br />
<br />
<p><font face="verdana, arial, helvetica" size="2"><span class="javascript" id="text1106979">查看本用户下的各种对象的SQL脚本<br />
表：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> <strong style="color: black; background-color: #99ff99">cat</strong>;<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> tab;<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> table_name <strong style="color: black; background-color: #a0ffff">from</strong> user_tables;<br />
视图：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> text <strong style="color: black; background-color: #a0ffff">from</strong> user_views where view_name=upper('&amp;view_name');<br />
索引：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> index_name,table_owner,table_name,tablespace_name,status <strong style="color: black; background-color: #a0ffff">from</strong> user_indexes order by table_name; <br />
触发器：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> trigger_name,trigger_type,table_owner,table_name,status <strong style="color: black; background-color: #a0ffff">from</strong> user_triggers;<br />
快照：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> owner,name,master,table_name,last_refresh,next <strong style="color: black; background-color: #a0ffff">from</strong> user_snapshots order by owner,next;<br />
同义词：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> syn;<br />
序列：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> seq;<br />
数据库链路：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> user_db_links;<br />
约束限制：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> TABLE_NAME,CONSTRAINT_NAME,SEARCH_CONDITION,STATUS <strong style="color: black; background-color: #a0ffff">from</strong> user_constraints;<br />
本用户读取其他用户对象的权限：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> user_tab_privs;<br />
本用户所拥有的系统权限：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> user_sys_privs;<br />
用户：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> all_users order by user_id;<br />
表空间剩余自由空间情况：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> tablespace_name,sum(bytes) 总字节数,max(bytes),count(*) <strong style="color: black; background-color: #a0ffff">from</strong> dba_free_space group by tablespace_name；<br />
数据字典：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> table_name <strong style="color: black; background-color: #a0ffff">from</strong> dict order by table_name;<br />
锁及资源信息：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> v$lock;不包括DDL锁<br />
数据库字符集：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> name,value$ <strong style="color: black; background-color: #a0ffff">from</strong> props$ where name='NLS_CHARACTERSET';<br />
inin.ora参数：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> name,value <strong style="color: black; background-color: #a0ffff">from</strong> v$parameter order by name;<br />
SQL共享池：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> sql_text <strong style="color: black; background-color: #a0ffff">from</strong> v$sqlarea;<br />
数据库：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> v$database<br />
控制文件：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> V$controlfile;<br />
重做日志文件信息：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> V$logfile;<br />
来自控制文件中的日志文件信息：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> V$log;<br />
来自控制文件中的数据文件信息：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> V$datafile;<br />
NLS参数当前值：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> V$nls_parameters;<br />
ORACLE版本信息：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> v$version;<br />
描述后台进程：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> v$bgprocess;<br />
查看版本信息：<br />
　　<strong style="color: black; background-color: #ffff66">select</strong> * <strong style="color: black; background-color: #a0ffff">from</strong> product_component_version;<br />
查看实例,所在主机名:<br />
&nbsp;&nbsp;&nbsp;&nbsp; <font style="background-color: #c4ecc9">select instance_name,host_name from v$instance;</font></span></font></p>
<img src ="http://www.blogjava.net/henry1451/aggbug/201238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/henry1451/" target="_blank">henry1451</a> 2008-05-18 15:16 <a href="http://www.blogjava.net/henry1451/articles/201238.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>