﻿<?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-捕风之巢-文章分类-数据库技术</title><link>http://www.blogjava.net/zhhp1314520/category/16150.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 16 Mar 2008 03:18:30 GMT</lastBuildDate><pubDate>Sun, 16 Mar 2008 03:18:30 GMT</pubDate><ttl>60</ttl><item><title>使用Ant管理HSQLDB的小脚本</title><link>http://www.blogjava.net/zhhp1314520/articles/hsql.html</link><dc:creator>捕风</dc:creator><author>捕风</author><pubDate>Fri, 14 Mar 2008 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/zhhp1314520/articles/hsql.html</guid><wfw:comment>http://www.blogjava.net/zhhp1314520/comments/186287.html</wfw:comment><comments>http://www.blogjava.net/zhhp1314520/articles/hsql.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhhp1314520/comments/commentRss/186287.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhhp1314520/services/trackbacks/186287.html</trackback:ping><description><![CDATA[<p style="font-size: 10pt; font-family: Verdana;"><span style="font-family: Verdana;"><span style="font-family: Verdana;"><span style="font-size: 10pt;">HSQLDB
是一个开源的DBMS数据库，以其体积小巧、功能实用、使用方便而越来越受到开发人员的欢迎，特别是在平时的开发、单元测试中。如果你不想安装庞大的
ORACLE、SQL Server数据库，同时又想尽快拥有一个可用的数据库，那么HSQLDB绝对是你的首选。<br />
<br />
Ant是一个人皆知之的打包发布工具，其简单的语法，丰富的功能，让我们不但可以方便地进行像资源管理、编译、运行、测试的功能，同时也能够快速地管理数据库。<br />
<br />
下面就以这两者为例，来介绍一下他们的结合运用。</span></span></span></p>
<br />
<span style="font-family: Verdana;"><span style="font-family: Verdana;"><span style="font-size: 10pt;"><strong>一、下载Ant和HSQLDB：</strong><br />
<br />
Ant的下载地址：<a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a><br />
HSQLDB的下载地址：<a href="http://sourceforge.net/project/showfiles.php?group_id=23316">http://sourceforge.net/project/showfiles.php?group_id=23316</a><br />
<br />
<strong>二、安装Ant和HSQLDB：</strong><br />
<br />
Ant的安装我就不多说了，可以参考其网站的文档。HSQLDB的安装更简单，直接把hsqldb.jar包拷贝到你工程的lib目录下就可以了。<br />
<br />
<strong>三、配置HSQLDB：</strong><br />
<br />
在你的工程目录下创建一个名为data的目录，这是HSQLDB用来存放数据文件的地方。够简单吧，^_^。<br />
<br />
<strong>四、编写Ant脚本：<br />
</strong><br />
我们的Ant脚本很简单，主要的功能有：启动数据库、关闭数据库、显示Swing界面的HSQLDB管理工具。请看下面的XML文件<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">project&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hibernate-hsql"</span><span style="color: #ff0000;">&nbsp;default</span><span style="color: #0000ff;">="startDb"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;Set&nbsp;default&nbsp;database&nbsp;properties&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hjar"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="lib/hsqldb.jar"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hclass"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="org.hsqldb.Server"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hfile"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="-database.0&nbsp;data/test"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="halias"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="test"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hport"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="9005"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;Start&nbsp;up&nbsp;HSQLDB&nbsp;instance,&nbsp;use&nbsp;default&nbsp;properties&nbsp;as&nbsp;arguments:&nbsp;database&nbsp;file,database&nbsp;name,port&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">target&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="startDb"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">java&nbsp;</span><span style="color: #ff0000;">fork</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;classname</span><span style="color: #0000ff;">="${hclass}"</span><span style="color: #ff0000;">&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classpath</span><span style="color: #0000ff;">="${hjar}"</span><span style="color: #ff0000;">&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args</span><span style="color: #0000ff;">="${hfile}&nbsp;-dbname.0&nbsp;${halias}&nbsp;-port&nbsp;${hport}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">target</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;Start&nbsp;up&nbsp;HSQLDB&nbsp;swing&nbsp;manager&nbsp;UI&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">target&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hsqldm"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">java&nbsp;</span><span style="color: #ff0000;">fork</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;classname</span><span style="color: #0000ff;">="org.hsqldb.util.DatabaseManagerSwing"</span><span style="color: #ff0000;">&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classpath</span><span style="color: #0000ff;">="${hjar}"</span><span style="color: #ff0000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">target</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;Shut&nbsp;down&nbsp;HSQLDB&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">target&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="shutdownDb"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">sql&nbsp;</span><span style="color: #ff0000;">classpath</span><span style="color: #0000ff;">="${hjar}"</span><span style="color: #ff0000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driver</span><span style="color: #0000ff;">="org.hsqldb.jdbcDriver"</span><span style="color: #ff0000;">&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff;">="jdbc:hsqldb:hsql://localhost:${hport}/${halias}"</span><span style="color: #ff0000;">&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userid</span><span style="color: #0000ff;">="sa"</span><span style="color: #ff0000;">&nbsp;password</span><span style="color: #0000ff;">=""</span><span style="color: #ff0000;">&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print</span><span style="color: #0000ff;">="yes"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SHUTDOWN<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">sql</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">target</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="../../Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">project</span><span style="color: #0000ff;">&gt;</span></div>
<p><br />
<span style="font-family: Verdana;"><span style="font-family: Verdana;">首先我们定义了几个属性：</span></span></p>
<p><span style="font-family: Verdana;"><span style="font-size: 10pt;"><span style="font-family: Verdana;"><span style="font-size: 10pt;">&#183;hjar：HSQLDB的JAR包位置<br />
</span></span></span></span><span style="font-family: Verdana;"><span style="font-size: 10pt;"><span style="font-family: Verdana;"><span style="font-size: 10pt;">&#183;hclass：org.hsqldb.Server，代表了HSQLDB。<br />
</span></span></span></span></p>
</span></span></span><span style="font-family: Verdana;"><span style="font-family: Verdana;"><span style="font-size: 10pt;">&#183;hfile：相当于URL，其中database.0代表了第一个数据库，data是存放数据的地方，test是数据库名<br />
&#183;halias：别名<br />
&#183;hport：端口号，默认为9905<br />
<br />
接着我们我们看startDb这个Target，它相当于我们在DOS下转到data目录下，执行java -classpath
/lib/hsqldb.jar org.hsqldb.Server。启动HSQLDB数据库。执行该Target后我们可以看到如下输出：<br />
<br />
startDb:<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] The args attribute is deprecated. Please use nested arg elements.<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: [Thread[main,5,main]]: checkRunning(false) entered<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: [Thread[main,5,main]]: checkRunning(false) exited<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: Startup sequence initiated from main() method<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: Loaded properties from [D:\peng\Java\Pro\framework\hibernate\server.properties]<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: Initiating startup sequence...<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: Server socket opened successfully in 32 ms.<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: Database [index=0, id=0, db=file:data/test, alias=test] opened sucessfully in 968 ms.<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: Startup sequence completed in 1000 ms.<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: 2008-02-24 22:56:39.468 HSQLDB server 1.8.0 is online<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: To close normally, connect and execute SHUTDOWN SQL<br />
&nbsp;&nbsp;&nbsp;&nbsp; [java] [Server@a62fc3]: From command line, use [Ctrl]+[C] to abort abruptly<br />
<br />
hsqldbm这个Target是一个Swing界面的HSQLDB管理工具，可以在上面执行一系列的简单的SQL操作，对于不想看日志的人来说比较方便，但功能不多。值得注意的是：执行这个Target并需要先启动HSQLDB。<br />
启动后我们可以看到如下界面：<br />
<br />
<img alt="" src="../../images/blogjava_net/pengpenglin/Java%E5%B7%A5%E5%85%B7/HSQLDB.JPG" border="0" height="280" width="405" /><br />
<br />
最后是HSQLB的关闭了。在Ant中我们可以采用&lt;sql&gt;&lt;/sql&gt;这个命令来执行SQL操作，首先当然是指定数据库的一
系列配置信息，然后在&lt;sql&gt;&lt;/sql&gt;之间书写SQL语句。这里SHUTDOWN是HSQLDB提供的一个用来关闭数据库
的命令。执行该命令后，我们可以看到如下输出：<br />
<br />
&nbsp;[java] [Server@a62fc3]: Initiating shutdown sequence...<br />
&nbsp;[java] [Server@a62fc3]: Shutdown sequence completed in 16 ms.<br />
&nbsp;[java] [Server@a62fc3]: 2008-02-24 22:57:27.375 SHUTDOWN : System.exit() is called next<br />
<br />
OK，这个简单的脚本就完成了，现在我们可以直接在DOS、Eclipse下启动、关闭、浏览HSQLDB了。</span></span></span>
<div class="postDesc">posted on 2008-02-24 22:40 <a href="../../pengpenglin/">Paul Lin</a> 阅读(820) <a href="../../pengpenglin/archive/2008/02/25/181841.html#Post">评论(2)</a> &nbsp;<a href="../../pengpenglin/admin/EditPosts.aspx?postid=181841">编辑</a> &nbsp;<a href="../../pengpenglin/AddToFavorite.aspx?id=181841">收藏</a>  所属分类: <a href="../../pengpenglin/category/28490.html">Java 工具</a> </div>
<img src="../../pengpenglin/aggbug/181841.html?webview=1" height="1" width="1"  alt="" /><!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description rdf:about="http://www.blogjava.net/pengpenglin/archive/2008/02/24/181841.html" dc:identifier="http://www.blogjava.net/pengpenglin/archive/2008/02/24/181841.html" dc:title="使用Ant管理HSQLDB的小脚本" trackback:ping="http://www.blogjava.net/pengpenglin/services/trackbacks/181841.aspx"  />
</rdf:RDF>
-->
<script type="text/javascript">
//<![cdata[ Sys.WebForms.PageRequestManager._initialize('AjaxHolder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]&gt;
</script>
<a style="width: 20px; height: 20px; text-indent: 20px; background-repeat: no-repeat; background-image: url(/CuteSoft_Client/CuteEditor/Load.ashx?type=image&amp;file=anchor.gif);" name="pagedcomment"></a>
<!--done-->
<img src ="http://www.blogjava.net/zhhp1314520/aggbug/186287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhhp1314520/" target="_blank">捕风</a> 2008-03-14 14:20 <a href="http://www.blogjava.net/zhhp1314520/articles/hsql.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入浅出理解索引结构</title><link>http://www.blogjava.net/zhhp1314520/articles/sql_index.html</link><dc:creator>捕风</dc:creator><author>捕风</author><pubDate>Fri, 05 Jan 2007 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/zhhp1314520/articles/sql_index.html</guid><wfw:comment>http://www.blogjava.net/zhhp1314520/comments/91999.html</wfw:comment><comments>http://www.blogjava.net/zhhp1314520/articles/sql_index.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhhp1314520/comments/commentRss/91999.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhhp1314520/services/trackbacks/91999.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: （一）深入浅出理解索引结构												        实际上，您可以把索引理解为一种特殊的目录。微软的										SQL SERVER								提供了两种索引：聚集索引（										clustered index								，也称聚类索引、簇集索引）和非聚集索引（										nonclustere...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhhp1314520/articles/sql_index.html'>阅读全文</a><img src ="http://www.blogjava.net/zhhp1314520/aggbug/91999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhhp1314520/" target="_blank">捕风</a> 2007-01-05 15:06 <a href="http://www.blogjava.net/zhhp1314520/articles/sql_index.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE常用傻瓜問題444問</title><link>http://www.blogjava.net/zhhp1314520/articles/oracle_444.html</link><dc:creator>捕风</dc:creator><author>捕风</author><pubDate>Thu, 04 Jan 2007 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/zhhp1314520/articles/oracle_444.html</guid><wfw:comment>http://www.blogjava.net/zhhp1314520/comments/91725.html</wfw:comment><comments>http://www.blogjava.net/zhhp1314520/articles/oracle_444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhhp1314520/comments/commentRss/91725.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhhp1314520/services/trackbacks/91725.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 大家在應用ORACLE的時候可能會遇到很多看起來不難的問題, 特別對新手來說, 		今天我簡單把它總結一下, 發布給大家, 希望對大家有幫助! 和大家一起探討, 共同進步!		對ORACLE高手來說是不用看的.		 		1. Oracle安裝完成后的初始口令?		　internal/oracle		　　sys/change_on_install		　　system/ma...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhhp1314520/articles/oracle_444.html'>阅读全文</a><img src ="http://www.blogjava.net/zhhp1314520/aggbug/91725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhhp1314520/" target="_blank">捕风</a> 2007-01-04 12:42 <a href="http://www.blogjava.net/zhhp1314520/articles/oracle_444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL与Oracle对比</title><link>http://www.blogjava.net/zhhp1314520/articles/sql_vs_oracle.html</link><dc:creator>捕风</dc:creator><author>捕风</author><pubDate>Thu, 04 Jan 2007 04:40:00 GMT</pubDate><guid>http://www.blogjava.net/zhhp1314520/articles/sql_vs_oracle.html</guid><wfw:comment>http://www.blogjava.net/zhhp1314520/comments/91724.html</wfw:comment><comments>http://www.blogjava.net/zhhp1314520/articles/sql_vs_oracle.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhhp1314520/comments/commentRss/91724.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhhp1314520/services/trackbacks/91724.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 001				、						SQL				与						ORACLE				的内存分配																				ORACLE								的内存分配大部分是由										INIT.ORA								来决定的，一个数据库实例可以有										N								种...&nbsp;&nbsp;<a href='http://www.blogjava.net/zhhp1314520/articles/sql_vs_oracle.html'>阅读全文</a><img src ="http://www.blogjava.net/zhhp1314520/aggbug/91724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhhp1314520/" target="_blank">捕风</a> 2007-01-04 12:40 <a href="http://www.blogjava.net/zhhp1314520/articles/sql_vs_oracle.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE内置函数大全</title><link>http://www.blogjava.net/zhhp1314520/articles/oracle_sql.html</link><dc:creator>捕风</dc:creator><author>捕风</author><pubDate>Mon, 30 Oct 2006 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/zhhp1314520/articles/oracle_sql.html</guid><wfw:comment>http://www.blogjava.net/zhhp1314520/comments/78065.html</wfw:comment><comments>http://www.blogjava.net/zhhp1314520/articles/oracle_sql.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhhp1314520/comments/commentRss/78065.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhhp1314520/services/trackbacks/78065.html</trackback:ping><description><![CDATA[
		<p>ORACLE内置函数大全</p>
		<p>SQL中的单记录函数<br />1.ASCII<br />返回与指定的字符对应的十进制数;<br />SQL&gt; select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;</p>
		<p>        A         A      ZERO     SPACE<br />--------- --------- --------- ---------<br />       65        97        48        32</p>
		<p>
				<br />2.CHR<br />给出整数,返回对应的字符;<br />SQL&gt; select chr(54740) zhao,chr(65) chr65 from dual;</p>
		<p>ZH C<br />-- -<br />赵 A</p>
		<p>3.CONCAT<br />连接两个字符串;<br />SQL&gt; select concat('010-','88888888')||'转23'  高乾竞电话 from dual;</p>
		<p>高乾竞电话<br />----------------<br />010-88888888转23</p>
		<p>4.INITCAP<br />返回字符串并将字符串的第一个字母变为大写;<br />SQL&gt; select initcap('smith') upp from dual;</p>
		<p>UPP<br />-----<br />Smith</p>
		<p>
				<br />5.INSTR(C1,C2,I,J)<br />在一个字符串中搜索指定的字符,返回发现指定的字符的位置;<br />C1    被搜索的字符串<br />C2    希望搜索的字符串<br />I     搜索的开始位置,默认为1<br />J     出现的位置,默认为1<br />SQL&gt; select instr('oracle traning','ra',1,2) instring from dual;</p>
		<p> INSTRING<br />---------<br />        9</p>
		<p>
				<br />6.LENGTH<br />返回字符串的长度;<br />SQL&gt; select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;</p>
		<p>NAME   LENGTH(NAME) ADDR             LENGTH(ADDR)       SAL LENGTH(TO_CHAR(SAL))<br />------ ------------ ---------------- ------------ --------- --------------------<br />高乾竞            3 北京市海锭区                6   9999.99                    7</p>
		<p> </p>
		<p>7.LOWER<br />返回字符串,并将所有的字符小写<br />SQL&gt; select lower('AaBbCcDd')AaBbCcDd from dual;</p>
		<p>AABBCCDD<br />--------<br />aabbccdd</p>
		<p>
				<br />8.UPPER<br />返回字符串,并将所有的字符大写<br />SQL&gt; select upper('AaBbCcDd') upper from dual;</p>
		<p>UPPER<br />--------<br />AABBCCDD</p>
		<p> </p>
		<p>9.RPAD和LPAD(粘贴字符)<br />RPAD  在列的右边粘贴字符<br />LPAD  在列的左边粘贴字符<br />SQL&gt; select lpad(rpad('gao',10,'*'),17,'*')from dual;</p>
		<p>LPAD(RPAD('GAO',1<br />-----------------<br />*******gao*******<br />不够字符则用*来填满</p>
		<p>
				<br />10.LTRIM和RTRIM<br />LTRIM  删除左边出现的字符串<br />RTRIM  删除右边出现的字符串<br />SQL&gt; select ltrim(rtrim('   gao qian jing   ',' '),' ') from dual;</p>
		<p>LTRIM(RTRIM('<br />-------------<br />gao qian jing</p>
		<p>
				<br />11.SUBSTR(string,start,count)<br />取子字符串,从start开始,取count个<br />SQL&gt; select substr('13088888888',3,8) from dual;</p>
		<p>SUBSTR('<br />--------<br />08888888</p>
		<p>
				<br />12.REPLACE('string','s1','s2')<br />string   希望被替换的字符或变量<br />s1       被替换的字符串<br />s2       要替换的字符串<br />SQL&gt; select replace('he love you','he','i') from dual;</p>
		<p>REPLACE('H<br />----------<br />i love you</p>
		<p>
				<br />13.SOUNDEX<br />返回一个与给定的字符串读音相同的字符串<br />SQL&gt; create table table1(xm varchar(8));<br />SQL&gt; insert into table1 values('weather');<br />SQL&gt; insert into table1 values('wether');<br />SQL&gt; insert into table1 values('gao');</p>
		<p>SQL&gt; select xm from table1 where soundex(xm)=soundex('weather');</p>
		<p>XM<br />--------<br />weather<br />wether</p>
		<p>
				<br />14.TRIM('s' from 'string')<br />LEADING   剪掉前面的字符<br />TRAILING  剪掉后面的字符<br />如果不指定,默认为空格符</p>
		<p>15.ABS<br />返回指定值的绝对值<br />SQL&gt; select abs(100),abs(-100) from dual;</p>
		<p> ABS(100) ABS(-100)<br />--------- ---------<br />      100       100</p>
		<p>
				<br />16.ACOS<br />给出反余弦的值<br />SQL&gt; select acos(-1) from dual;</p>
		<p> ACOS(-1)<br />---------<br />3.1415927</p>
		<p>
				<br />17.ASIN<br />给出反正弦的值<br />SQL&gt; select asin(0.5) from dual;</p>
		<p>ASIN(0.5)<br />---------<br />.52359878</p>
		<p>
				<br />18.ATAN<br />返回一个数字的反正切值<br />SQL&gt; select atan(1) from dual;</p>
		<p>  ATAN(1)<br />---------<br />.78539816</p>
		<p>
				<br />19.CEIL<br />返回大于或等于给出数字的最小整数<br />SQL&gt; select ceil(3.1415927) from dual;</p>
		<p>CEIL(3.1415927)<br />---------------<br />              4</p>
		<p>
				<br />20.COS<br />返回一个给定数字的余弦<br />SQL&gt; select cos(-3.1415927) from dual;</p>
		<p>COS(-3.1415927)<br />---------------<br />             -1</p>
		<p>
				<br />21.COSH<br />返回一个数字反余弦值<br />SQL&gt; select cosh(20) from dual;</p>
		<p> COSH(20)<br />---------<br />242582598</p>
		<p>
				<br />22.EXP<br />返回一个数字e的n次方根<br />SQL&gt; select exp(2),exp(1) from dual;</p>
		<p>   EXP(2)    EXP(1)<br />--------- ---------<br />7.3890561 2.7182818</p>
		<p>
				<br />23.FLOOR<br />对给定的数字取整数<br />SQL&gt; select floor(2345.67) from dual;</p>
		<p>FLOOR(2345.67)<br />--------------<br />          2345</p>
		<p>
				<br />24.LN<br />返回一个数字的对数值<br />SQL&gt; select ln(1),ln(2),ln(2.7182818) from dual;</p>
		<p>    LN(1)     LN(2) LN(2.7182818)<br />--------- --------- -------------<br />        0 .69314718     .99999999</p>
		<p>
				<br />25.LOG(n1,n2)<br />返回一个以n1为底n2的对数<br />SQL&gt; select log(2,1),log(2,4) from dual;</p>
		<p> LOG(2,1)  LOG(2,4)<br />--------- ---------<br />        0         2</p>
		<p>
				<br />26.MOD(n1,n2)<br />返回一个n1除以n2的余数<br />SQL&gt; select mod(10,3),mod(3,3),mod(2,3) from dual;</p>
		<p>MOD(10,3)  MOD(3,3)  MOD(2,3)<br />--------- --------- ---------<br />        1         0         2</p>
		<p>
				<br />27.POWER<br />返回n1的n2次方根<br />SQL&gt; select power(2,10),power(3,3) from dual;</p>
		<p>POWER(2,10) POWER(3,3)<br />----------- ----------<br />       1024         27</p>
		<p>
				<br />28.ROUND和TRUNC<br />按照指定的精度进行舍入<br />SQL&gt; select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;</p>
		<p>ROUND(55.5) ROUND(-55.4) TRUNC(55.5) TRUNC(-55.5)<br />----------- ------------ ----------- ------------<br />         56          -55          55          -55</p>
		<p>
				<br />29.SIGN<br />取数字n的符号,大于0返回1,小于0返回-1,等于0返回0<br />SQL&gt; select sign(123),sign(-100),sign(0) from dual;</p>
		<p>SIGN(123) SIGN(-100)   SIGN(0)<br />--------- ---------- ---------<br />        1         -1         0</p>
		<p>
				<br />30.SIN<br />返回一个数字的正弦值<br />SQL&gt; select sin(1.57079) from dual;</p>
		<p>SIN(1.57079)<br />------------<br />           1</p>
		<p>
				<br />31.SIGH<br />返回双曲正弦的值<br />SQL&gt; select sin(20),sinh(20) from dual;</p>
		<p>  SIN(20)  SINH(20)<br />--------- ---------<br />.91294525 242582598</p>
		<p>
				<br />32.SQRT<br />返回数字n的根<br />SQL&gt; select sqrt(64),sqrt(10) from dual;</p>
		<p> SQRT(64)  SQRT(10)<br />--------- ---------<br />        8 3.1622777</p>
		<p>
				<br />33.TAN<br />返回数字的正切值<br />SQL&gt; select tan(20),tan(10) from dual;</p>
		<p>  TAN(20)   TAN(10)<br />--------- ---------<br />2.2371609 .64836083</p>
		<p>
				<br />34.TANH<br />返回数字n的双曲正切值<br />SQL&gt; select tanh(20),tan(20) from dual;</p>
		<p> TANH(20)   TAN(20)<br />--------- ---------<br />        1 2.2371609</p>
		<p> </p>
		<p>35.TRUNC<br />按照指定的精度截取一个数<br />SQL&gt; select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;</p>
		<p>   TRUNC1 TRUNC(124.16666,2)<br />--------- ------------------<br />      100             124.16</p>
		<p> </p>
		<p>36.ADD_MONTHS<br />增加或减去月份<br />SQL&gt; select to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') from dual;</p>
		<p>TO_CHA<br />------<br />200002<br />SQL&gt; select to_char(add_months(to_date('199912','yyyymm'),-2),'yyyymm') from dual;</p>
		<p>TO_CHA<br />------<br />199910</p>
		<p>
				<br />37.LAST_DAY<br />返回日期的最后一天<br />SQL&gt; select to_char(sysdate,'yyyy.mm.dd'),to_char((sysdate)+1,'yyyy.mm.dd') from dual;</p>
		<p>TO_CHAR(SY TO_CHAR((S<br />---------- ----------<br />2004.05.09 2004.05.10<br />SQL&gt; select last_day(sysdate) from dual;</p>
		<p>LAST_DAY(S<br />----------<br />31-5月 -04</p>
		<p>
				<br />38.MONTHS_BETWEEN(date2,date1)<br />给出date2-date1的月份<br />SQL&gt; select months_between('19-12月-1999','19-3月-1999') mon_between from dual;</p>
		<p>MON_BETWEEN<br />-----------<br />          9<br />SQL&gt;selectmonths_between(to_date('2000.05.20','yyyy.mm.dd'),to_date('2005.05.20','yyyy.mm.dd')) mon_betw from dual;</p>
		<p> MON_BETW<br />---------<br />      -60</p>
		<p>
				<br />39.NEW_TIME(date,'this','that')<br />给出在this时区=other时区的日期和时间<br />SQL&gt; select to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') bj_time,to_char(new_time<br />  2  (sysdate,'PDT','GMT'),'yyyy.mm.dd hh24:mi:ss') los_angles from dual;</p>
		<p>BJ_TIME             LOS_ANGLES<br />------------------- -------------------<br />2004.05.09 11:05:32 2004.05.09 18:05:32</p>
		<p>
				<br />40.NEXT_DAY(date,'day')<br />给出日期date和星期x之后计算下一个星期的日期<br />SQL&gt; select next_day('18-5月-2001','星期五') next_day from dual;</p>
		<p>NEXT_DAY<br />----------<br />25-5月 -01</p>
		<p> </p>
		<p>41.SYSDATE<br />用来得到系统的当前日期<br />SQL&gt; select to_char(sysdate,'dd-mm-yyyy day') from dual;</p>
		<p>TO_CHAR(SYSDATE,'<br />-----------------<br />09-05-2004 星期日<br />trunc(date,fmt)按照给出的要求将日期截断,如果fmt='mi'表示保留分,截断秒<br />SQL&gt; select to_char(trunc(sysdate,'hh'),'yyyy.mm.dd hh24:mi:ss') hh,<br />  2  to_char(trunc(sysdate,'mi'),'yyyy.mm.dd hh24:mi:ss') hhmm from dual;</p>
		<p>HH                  HHMM<br />------------------- -------------------<br />2004.05.09 11:00:00 2004.05.09 11:17:00</p>
		<p> </p>
		<p>42.CHARTOROWID<br />将字符数据类型转换为ROWID类型<br />SQL&gt; select rowid,rowidtochar(rowid),ename from scott.emp;</p>
		<p>ROWID              ROWIDTOCHAR(ROWID) ENAME<br />------------------ ------------------ ----------<br />AAAAfKAACAAAAEqAAA AAAAfKAACAAAAEqAAA SMITH<br />AAAAfKAACAAAAEqAAB AAAAfKAACAAAAEqAAB ALLEN<br />AAAAfKAACAAAAEqAAC AAAAfKAACAAAAEqAAC WARD<br />AAAAfKAACAAAAEqAAD AAAAfKAACAAAAEqAAD JONES</p>
		<p>
				<br />43.CONVERT(c,dset,sset)<br />将源字符串 sset从一个语言字符集转换到另一个目的dset字符集<br />SQL&gt; select convert('strutz','we8hp','f7dec') "conversion" from dual;</p>
		<p>conver<br />------<br />strutz</p>
		<p>
				<br />44.HEXTORAW<br />将一个十六进制构成的字符串转换为二进制</p>
		<p>
				<br />45.RAWTOHEXT<br />将一个二进制构成的字符串转换为十六进制</p>
		<p> </p>
		<p>46.ROWIDTOCHAR<br />将ROWID数据类型转换为字符类型</p>
		<p> </p>
		<p>47.TO_CHAR(date,'format')<br />SQL&gt; select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;</p>
		<p>TO_CHAR(SYSDATE,'YY<br />-------------------<br />2004/05/09 21:14:41</p>
		<p> </p>
		<p>48.TO_DATE(string,'format')<br />将字符串转化为ORACLE中的一个日期</p>
		<p>
				<br />49.TO_MULTI_BYTE<br />将字符串中的单字节字符转化为多字节字符<br />SQL&gt;  select to_multi_byte('高') from dual;</p>
		<p>TO<br />--<br />高</p>
		<p>
				<br />50.TO_NUMBER<br />将给出的字符转换为数字<br />SQL&gt; select to_number('1999') year from dual;</p>
		<p>     YEAR<br />---------<br />     1999</p>
		<p>
				<br />51.BFILENAME(dir,file)<br />指定一个外部二进制文件<br />SQL&gt;insert into file_tb1 values(bfilename('lob_dir1','image1.gif'));</p>
		<p>
				<br />52.CONVERT('x','desc','source')<br />将x字段或变量的源source转换为desc<br />SQL&gt; select sid,serial#,username,decode(command,<br />  2  0,'none',<br />  3  2,'insert',<br />  4  3,<br />  5  'select',<br />  6  6,'update',<br />  7  7,'delete',<br />  8  8,'drop',<br />  9  'other') cmd  from v$session where type!='background';</p>
		<p>      SID   SERIAL# USERNAME                       CMD<br />--------- --------- ------------------------------ ------<br />        1         1                                none<br />        2         1                                none<br />        3         1                                none<br />        4         1                                none<br />        5         1                                none<br />        6         1                                none<br />        7      1275                                none<br />        8      1275                                none<br />        9        20 GAO                            select<br />       10        40 GAO                            none</p>
		<p>
				<br />53.DUMP(s,fmt,start,length)<br />DUMP函数以fmt指定的内部数字格式返回一个VARCHAR2类型的值<br />SQL&gt; col global_name for a30<br />SQL&gt; col dump_string for a50<br />SQL&gt; set lin 200<br />SQL&gt; select global_name,dump(global_name,1017,8,5) dump_string from global_name;</p>
		<p>GLOBAL_NAME                    DUMP_STRING<br />------------------------------ --------------------------------------------------<br />ORACLE.WORLD                   Typ=1 Len=12 CharacterSet=ZHS16GBK: W,O,R,L,D</p>
		<p>
				<br />54.EMPTY_BLOB()和EMPTY_CLOB()<br />这两个函数都是用来对大数据类型字段进行初始化操作的函数</p>
		<p>
				<br />55.GREATEST<br />返回一组表达式中的最大值,即比较字符的编码大小.<br />SQL&gt; select greatest('AA','AB','AC') from dual;</p>
		<p>GR<br />--<br />AC<br />SQL&gt; select greatest('啊','安','天') from dual;</p>
		<p>GR<br />--<br />天</p>
		<p>
				<br />56.LEAST<br />返回一组表达式中的最小值<br />SQL&gt; select least('啊','安','天') from dual;</p>
		<p>LE<br />--<br />啊</p>
		<p>
				<br />57.UID<br />返回标识当前用户的唯一整数<br />SQL&gt; show user<br />USER 为"GAO"<br />SQL&gt; select username,user_id from dba_users where user_id=uid;</p>
		<p>USERNAME                         USER_ID<br />------------------------------ ---------<br />GAO                                   25</p>
		<p> </p>
		<p>58.USER<br />返回当前用户的名字<br />SQL&gt; select user from  dual;</p>
		<p>USER<br />------------------------------<br />GAO</p>
		<p>
				<br />59.USEREVN<br />返回当前用户环境的信息,opt可以是:<br />ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE<br />ISDBA  查看当前用户是否是DBA如果是则返回true<br />SQL&gt; select userenv('isdba') from dual;</p>
		<p>USEREN<br />------<br />FALSE<br />SQL&gt; select userenv('isdba') from dual;</p>
		<p>USEREN<br />------<br />TRUE<br />SESSION<br />返回会话标志<br />SQL&gt; select userenv('sessionid') from dual;</p>
		<p>USERENV('SESSIONID')<br />--------------------<br />                 152<br />ENTRYID<br />返回会话人口标志<br />SQL&gt; select userenv('entryid') from dual;</p>
		<p>USERENV('ENTRYID')<br />------------------<br />                 0<br />INSTANCE<br />返回当前INSTANCE的标志<br />SQL&gt; select userenv('instance') from dual;</p>
		<p>USERENV('INSTANCE')<br />-------------------<br />                  1<br />LANGUAGE<br />返回当前环境变量<br />SQL&gt; select userenv('language') from dual;</p>
		<p>USERENV('LANGUAGE')<br />----------------------------------------------------<br />SIMPLIFIED CHINESE_CHINA.ZHS16GBK<br />LANG<br />返回当前环境的语言的缩写<br />SQL&gt; select userenv('lang') from dual;</p>
		<p>USERENV('LANG')<br />----------------------------------------------------<br />ZHS<br />TERMINAL<br />返回用户的终端或机器的标志<br />SQL&gt; select userenv('terminal') from dual;</p>
		<p>USERENV('TERMINA<br />----------------<br />GAO<br />VSIZE(X)<br />返回X的大小(字节)数<br />SQL&gt; select vsize(user),user from dual;</p>
		<p>VSIZE(USER) USER<br />----------- ------------------------------<br />          6 SYSTEM</p>
		<p> </p>
		<p>60.AVG(DISTINCT|ALL)<br />all表示对所有的值求平均值,distinct只对不同的值求平均值<br />SQLWKS&gt; create table table3(xm varchar(8),sal number(7,2));<br />语句已处理。<br />SQLWKS&gt;  insert into table3 values('gao',1111.11);<br />SQLWKS&gt;  insert into table3 values('gao',1111.11);<br />SQLWKS&gt;  insert into table3 values('zhu',5555.55);<br />SQLWKS&gt; commit;</p>
		<p>SQL&gt; select avg(distinct sal) from gao.table3;</p>
		<p>AVG(DISTINCTSAL)<br />----------------<br />         3333.33</p>
		<p>SQL&gt; select avg(all sal) from gao.table3;</p>
		<p>AVG(ALLSAL)<br />-----------<br />    2592.59</p>
		<p>
				<br />61.MAX(DISTINCT|ALL)<br />求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次<br />　　返回选择列表项目的最大值，如果x是字符串数据类型，他返回一个VARCHAR2数据类型，如果X是一个DATA数据类型，返回一个日期，如果X是numeric数据类型，返回一个数字。注意distinct和all不起作用，应为最大值与这两种设置是相同的。<br />SQL&gt; select max(distinct sal) from scott.emp;</p>
		<p>MAX(DISTINCTSAL)<br />----------------<br />            5000</p>
		<p>
				<br />62.MIN(DISTINCT|ALL)<br />求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次<br />SQL&gt; select min(all sal) from gao.table3;</p>
		<p>MIN(ALLSAL)<br />-----------<br />    1111.11</p>
		<p>
				<br />63.STDDEV(distinct|all)<br />求标准差,ALL表示对所有的值求标准差,DISTINCT表示只对不同的值求标准差<br />SQL&gt; select stddev(sal) from scott.emp;</p>
		<p>STDDEV(SAL)<br />-----------<br />  1182.5032</p>
		<p>SQL&gt; select stddev(distinct sal) from scott.emp;</p>
		<p>STDDEV(DISTINCTSAL)<br />-------------------<br />           1229.951</p>
		<p> </p>
		<p>64.VARIANCE(DISTINCT|ALL)<br />求协方差</p>
		<p>SQL&gt; select variance(sal) from scott.emp;</p>
		<p>VARIANCE(SAL)<br />-------------<br />    1398313.9</p>
		<p>
				<br />65.GROUP BY<br />主要用来对一组数进行统计<br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp group by deptno;</p>
		<p>   DEPTNO  COUNT(*)  SUM(SAL)<br />--------- --------- ---------<br />       10         3      8750<br />       20         5     10875<br />       30         6      9400</p>
		<p> </p>
		<p>66.HAVING<br />对分组统计再加限制条件<br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp group by deptno having count(*)&gt;=5;</p>
		<p>   DEPTNO  COUNT(*)  SUM(SAL)<br />--------- --------- ---------<br />       20         5     10875<br />       30         6      9400<br />SQL&gt; select deptno,count(*),sum(sal) from scott.emp having count(*)&gt;=5 group by deptno ;</p>
		<p>   DEPTNO  COUNT(*)  SUM(SAL)<br />--------- --------- ---------<br />       20         5     10875<br />       30         6      9400</p>
		<p>
				<br />67.ORDER BY<br />用于对查询到的结果进行排序输出<br />SQL&gt; select deptno,ename,sal from scott.emp order by deptno,sal desc;</p>
		<p>   DEPTNO ENAME            SAL<br />--------- ---------- ---------<br />       10 KING            5000<br />       10 CLARK           2450<br />       10 MILLER          1300<br />       20 SCOTT           3000<br />       20 FORD            3000<br />       20 JONES           2975<br />       20 ADAMS           1100<br />       20 SMITH            800<br />       30 BLAKE           2850<br />       30 ALLEN           1600<br />       30 TURNER          1500<br />       30 WARD            1250<br />       30 MARTIN          1250<br />       30 JAMES            950<br />      <br />68.sys_connect_by_path<br />自从Since Oracle 9i 开始，就可以通过 SYS_CONNECT_BY_PATH 函数实现将从父节点到当前行内容以“path”或者层次元素列表的形式显示出来。 如下例所示：<br />column path format a50<br />select level,sys_connect_by_path(child,"/") path<br />from hier<br />start with parent is null<br />connect by prior child = parent;</p>
		<p>LEVEL PATH<br />-------- --------------------------------------------<br />1 /Asia<br />2 /Asia/China<br />3 /Asia/China/Beijing<br />2 /Asia/Japan<br />3 /Asia/Japan/Osaka<br />3 /Asia/Japan/Tokyo<br />1 /Australia<br />2 /Australia/New South Wales<br />3 /Australia/New South Wales/Sydney<br />1 /Europe<br />2 /Europe/United Kingdom<br />3 /Europe/United Kingdom/England<br />4 /Europe/United Kingdom/England/London</p>
<img src ="http://www.blogjava.net/zhhp1314520/aggbug/78065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhhp1314520/" target="_blank">捕风</a> 2006-10-30 15:43 <a href="http://www.blogjava.net/zhhp1314520/articles/oracle_sql.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLServer和Oracle常用函数对比</title><link>http://www.blogjava.net/zhhp1314520/articles/sqlserver_vs_oracle.html</link><dc:creator>捕风</dc:creator><author>捕风</author><pubDate>Mon, 30 Oct 2006 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/zhhp1314520/articles/sqlserver_vs_oracle.html</guid><wfw:comment>http://www.blogjava.net/zhhp1314520/comments/78063.html</wfw:comment><comments>http://www.blogjava.net/zhhp1314520/articles/sqlserver_vs_oracle.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhhp1314520/comments/commentRss/78063.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhhp1314520/services/trackbacks/78063.html</trackback:ping><description><![CDATA[ 数学函数<br />　　 1.绝对值 <br />　　 S:select abs(-1) value<br />　　 O:select abs(-1) value from dual
<p>　　2.取整(大) <br />　　 S:select ceiling(-1.001) value <br />　　 O:select ceil(-1.001) value from dual</p><p>　　3.取整（小） <br />　　 S:select floor(-1.001) value <br />　　 O:select floor(-1.001) value from dual</p><p>　　4.取整（截取）<br />　　 S:select cast(-1.002 as int) value <br />　　 O:select trunc(-1.002) value from dual </p><p>　　5.四舍五入<br />　　 S:select round(1.23456,4) value 1.23460<br />　　 O:select round(1.23456,4) value from dual 1.2346</p><p>　　6.e为底的幂 <br />　　 S:select Exp(1) value 2.7182818284590451 <br />　　 O:select Exp(1) value from dual 2.71828182</p><p>　　7.取e为底的对数<br />　　 S:select log(2.7182818284590451) value 1<br />　　 O:select ln(2.7182818284590451) value from dual; 1</p><p>　　8.取10为底对数<br />　　 S:select log10(10) value 1<br />　　 O:select log(10,10) value from dual; 1</p><p>　　9.取平方<br />　　 S:select SQUARE(4) value 16<br />　　 O:select power(4,2) value from dual 16</p><p>　　10.取平方根<br />　　 S:select SQRT(4) value 2<br />　　 O:select SQRT(4) value from dual 2</p><p>　　11.求任意数为底的幂<br />　　 S:select power(3,4) value 81<br />　　 O:select power(3,4) value from dual 81</p><p>　　12.取随机数<br />　　 S:select rand() value <br />　　 O:select sys.dbms_random.value(0,1) value from dual;</p><p>　　13.取符号<br />　　 S:select sign(-8) value -1<br />　　 O:select sign(-8) value from dual -1</p><p>　　14.圆周率<br />　　 S:SELECT PI() value 3.1415926535897931<br />　　 O:不知道</p><p>　　15.sin,cos,tan 参数都以弧度为单位<br />　　 例如：select sin(PI()/2) value 得到1（SQLServer）</p><p>　　16.Asin,Acos,Atan,Atan2 返回弧度</p><p>　　17.弧度角度互换(SQLServer，Oracle不知道)<br />　　 DEGREES：弧度-〉角度<br />　　 RADIANS：角度-〉弧度</p><p>数值间比较</p><p>　　18. 求集合最大值<br />　　 S:select max(value) value from <br />　　 (select 1 value<br />　　 union<br />　　 select -2 value<br />　　 union<br />　　 select 4 value<br />　　 union<br />　　 select 3 value)a</p><p>　　O:select greatest(1,-2,4,3) value from dual</p><p>　　19. 求集合最小值<br />　　 S:select min(value) value from <br />　　 (select 1 value<br />　　 union<br />　　 select -2 value<br />　　 union<br />　　 select 4 value<br />　　 union<br />　　 select 3 value)a</p><p>　　O:select least(1,-2,4,3) value from dual</p><p>　　20.如何处理null值(F2中的null以10代替)<br />　　 S:select F1,IsNull(F2,10) value from Tbl<br />　　 O:select F1,nvl(F2,10) value from Tbl</p><p>　　21.求字符序号<br />　　 S:select ascii('a') value<br />　　 O:select ascii('a') value from dual</p><p>　　22.从序号求字符<br />　　 S:select char(97) value<br />　　 O:select chr(97) value from dual</p><p>　　23.连接<br />　　 S:select '11'+'22'+'33' value<br />　　 O:select CONCAT('11','22')||33 value from dual</p><p>23.子串位置 --返回3<br />　　 S:select CHARINDEX('s','sdsq',2) value <br />　　 O:select INSTR('sdsq','s',2) value from dual</p><p>　　23.模糊子串的位置 --返回2,参数去掉中间%则返回7<br />　　 S:select patindex('%d%q%','sdsfasdqe') value <br />　　 O:oracle没发现，但是instr可以通过第四个参数控制出现次数<br />　　 select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6</p><p>　　24.求子串<br />　　 S:select substring('abcd',2,2) value <br />　　 O:select substr('abcd',2,2) value from dual</p><p>　　25.子串代替 返回aijklmnef<br />　　 S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value<br />　　 O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual</p><p>　　26.子串全部替换<br />　　 S:没发现<br />　　 O:select Translate('fasdbfasegas','fa','我' ) value from dual</p><p>　　27.长度<br />　　 S:len,datalength<br />　　 O:length</p><p>　　28.大小写转换 lower,upper</p><p>　　29.单词首字母大写<br />　　 S:没发现<br />　　 O:select INITCAP('abcd dsaf df') value from dual</p><p>　　30.左补空格（LPAD的第一个参数为空格则同space函数）<br />　　 S:select space(10)+'abcd' value<br />　　 O:select LPAD('abcd',14) value from dual</p><p>　　31.右补空格（RPAD的第一个参数为空格则同space函数）<br />　　 S:select 'abcd'+space(10) value<br />　　 O:select RPAD('abcd',14) value from dual</p><p>　　32.删除空格<br />　　 S:ltrim,rtrim<br />　　 O:ltrim,rtrim,trim</p><p>　　33. 重复字符串<br />　　 S:select REPLICATE('abcd',2) value <br />　　 O:没发现</p><p>　　34.发音相似性比较(这两个单词返回值一样，发音相同)<br />　　 S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')<br />　　 O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual<br />　　 SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差<br />　　 返回0-4，4为同音，1最高</p><p>日期函数<br />　　 35.系统时间<br />　　 S:select getdate() value<br />　　 O:select sysdate value from dual</p><p>　　36.前后几日<br />　　 直接与整数相加减</p><p>　　37.求日期<br />　　 S:select convert(char(10),getdate(),20) value<br />　　 O:select trunc(sysdate) value from dual<br />　　 select to_char(sysdate,'yyyy-mm-dd') value from dual</p><p>　　38.求时间<br />　　 S:select convert(char(8),getdate(),108) value<br />　　 O:select to_char(sysdate,'hh24:mm:ss') value from dual</p><p>39.取日期时间的其他部分<br />　　 S:DATEPART 和 DATENAME 函数 （第一个参数决定） <br />　　 O:to_char函数 第二个参数决定</p><p>　　参数---------------------------------下表需要补充<br />　　 year yy, yyyy <br />　　 quarter qq, q (季度)<br />　　 month mm, m (m O无效)<br />　　 dayofyear dy, y (O表星期)<br />　　 day dd, d (d O无效)<br />　　 week wk, ww (wk O无效)<br />　　 weekday dw (O不清楚)<br />　　 Hour hh,hh12,hh24 (hh12,hh24 S无效)<br />　　 minute mi, n (n O无效)<br />　　 second ss, s (s O无效)<br />　　 millisecond ms (O无效)<br />　　 ----------------------------------------------</p><p>　　40.当月最后一天<br />　　 S:不知道<br />　　 O:select LAST_DAY(sysdate) value from dual</p><p>　　41.本星期的某一天（比如星期日）<br />　　 S:不知道<br />　　 O:SELECT Next_day(sysdate,7) vaule FROM DUAL;</p><p>　　42.字符串转时间<br />　　 S:可以直接转或者select cast('2004-09-08'as datetime) value<br />　　 O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;</p><p>　　43.求两日期某一部分的差（比如秒）<br />　　 S:select datediff(ss,getdate(),getdate()+12.3) value<br />　　 O:直接用两个日期相减（比如d1-d2=12.3）<br />　　 SELECT (d1-d2)*24*60*60 vaule FROM DUAL;</p><p>　　44.根据差值求新的日期（比如分钟）<br />　　 S:select dateadd(mi,8,getdate()) value<br />　　 O:SELECT sysdate+8/60/24 vaule FROM DUAL;</p><p>　　45.求不同时区时间<br />　　 S:不知道<br />　　 O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;</p><p>　　-----时区参数,北京在东8区应该是Ydt-------<br />　　 AST ADT 大西洋标准时间<br />　　 BST BDT 白令海标准时间<br />　　 CST CDT 中部标准时间<br />　　 EST EDT 东部标准时间<br />　　 GMT 格林尼治标准时间<br />　　 HST HDT 阿拉斯加?夏威夷标准时间<br />　　 MST MDT 山区标准时间<br />　　 NST 纽芬兰标准时间<br />　　 PST PDT 太平洋标准时间<br />　　 YST YDT YUKON标准时间 </p><img src ="http://www.blogjava.net/zhhp1314520/aggbug/78063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhhp1314520/" target="_blank">捕风</a> 2006-10-30 15:42 <a href="http://www.blogjava.net/zhhp1314520/articles/sqlserver_vs_oracle.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>经典SQL语句集锦</title><link>http://www.blogjava.net/zhhp1314520/articles/sql_all.html</link><dc:creator>捕风</dc:creator><author>捕风</author><pubDate>Wed, 18 Oct 2006 09:50:00 GMT</pubDate><guid>http://www.blogjava.net/zhhp1314520/articles/sql_all.html</guid><wfw:comment>http://www.blogjava.net/zhhp1314520/comments/75998.html</wfw:comment><comments>http://www.blogjava.net/zhhp1314520/articles/sql_all.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhhp1314520/comments/commentRss/75998.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhhp1314520/services/trackbacks/75998.html</trackback:ping><description><![CDATA[     <font style="BACKGROUND-COLOR: rgb(238,130,238)" face="Arial" color="#ffffff" size="5"><strong>经典SQL语句集锦<br /></strong></font><br />下列语句部分是MsSql语句，不可以在access中使用。<br /><br />SQL分类： <br />DDL—数据定义语言(CREATE，ALTER，DROP，DECLARE) <br />DML—数据操纵语言(SELECT，DELETE，UPDATE，INSERT) <br />DCL—数据控制语言(GRANT，REVOKE，COMMIT，ROLLBACK)<br /><br />首先,简要介绍基础语句：<br /><font style="BACKGROUND-COLOR: rgb(255,255,255)" color="#ff1493">1、说明：创建数据库<br /></font>CREATE DATABASE database-name <br /><font color="#ff1493">2、说明：删除数据库<br /></font>drop database dbname<br /><font color="#ff1493">3、说明：备份sql server</font><br />--- 创建 备份数据的 device<br />USE master<br />EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'<br />--- 开始 备份<br />BACKUP DATABASE pubs TO testBack <br /><font color="#ff1493">4、说明：创建新表</font><br />create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)<br />根据已有的表创建新表： <br />A：create table tab_new like tab_old (使用旧表创建新表)<br />B：create table tab_new as select col1,col2… from tab_old definition only<br /><font color="#ff1493">5、说明：删除新表<br /></font>drop table tabname <br /><font color="#ff1493">6、说明：增加一个列</font><br />Alter table tabname add column col type<br />注：列增加后将不能删除。DB2中列加上后数据类型也不能改变，唯一能改变的是增加varchar类型的长度。<br /><font color="#ff1493">7、说明：添加主键：</font> Alter table tabname add primary key(col) <br /><font color="#ff1493">说明：删除主键：</font> Alter table tabname drop primary key(col) <br /><font color="#ff1493">8、说明：创建索引：</font>create [unique] index idxname on tabname(col….) <br /><font color="#ff1493">删除索引：</font>drop index idxname<br />注：索引是不可更改的，想更改必须删除重新建。<br /><font color="#ff1493">9、说明：创建视图</font>：create view viewname as select statement <br /><font color="#ff1493">删除视图：</font>drop view viewname<br /><font color="#ff1493">10、说明：几个简单的基本的sql语句<br /></font>选择：select * from table1 where 范围<br />插入：insert into table1(field1,field2) values(value1,value2)<br />删除：delete from table1 where 范围<br />更新：update table1 set field1=value1 where 范围<br />查找：select * from table1 where field1 like ’%value1%’ ---like的语法很精妙，查资料!<br />排序：select * from table1 order by field1,field2 [desc]<br />总数：select count * as totalcount from table1<br />求和：select sum(field1) as sumvalue from table1<br />平均：select avg(field1) as avgvalue from table1<br />最大：select max(field1) as maxvalue from table1<br />最小：select min(field1) as minvalue from table1<br /><font color="#ff1493">11、说明：几个高级查询运算词</font><br />A： UNION 运算符 <br />UNION 运算符通过组合其他两个结果表（例如 TABLE1 和 TABLE2）并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时（即 UNION ALL），不消除重复行。两种情况下，派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 <br />B： EXCEPT 运算符 <br />EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL)，不消除重复行。 <br />C： INTERSECT 运算符<br />INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL)，不消除重复行。 <br />注：使用运算词的几个查询结果行必须是一致的。 <br /><font color="#ff1493">12、说明：使用外连接 <br /></font>A、left outer join： <br />左外连接（左连接）：结果集几包括连接表的匹配行，也包括左连接表的所有行。 <br />SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c<br />B：right outer join: <br />右外连接(右连接)：结果集既包括连接表的匹配连接行，也包括右连接表的所有行。 <br />C：full outer join： <br />全外连接：不仅包括符号连接表的匹配行，还包括两个连接表中的所有记录。<br /><br /><font color="#ff1493">其次，大家来看一些不错的sql语句</font><br /><font color="#ff1493">1、说明：复制表</font>(只复制结构,源表名：a 新表名：b) (Access可用)<br />法一：select * into b from a where 1&lt;&gt;1<br />法二：select top 0 * into b from a<br /><br /><font color="#ff1493">2、说明：拷贝表</font>(拷贝数据,源表名：a 目标表名：b) (Access可用)<br />insert into b(a, b, c) select d,e,f from b;<br /><br /><font color="#ff1493">3、说明：跨数据库之间表的拷贝</font>(具体数据使用绝对路径) (Access可用)<br />insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件<br />例子：..from b in '"&amp;Server.MapPath(".")&amp;"\data.mdb" &amp;"' where..<br /><br /><font color="#ff1493">4、说明：子查询</font>(表名1：a 表名2：b)<br />select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)<br /><br /><font color="#ff1493">5、说明：显示文章、提交人和最后回复时间<br /></font>select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b<br /><br /><font color="#ff1493">6、说明：外连接查询(表名1：a 表名2：b)<br /></font>select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c<br /><br /><font color="#ff1493">7、说明：在线视图查询(表名1：a )</font><br />select * from (SELECT a,b,c FROM a) T where t.a &gt; 1;<br /><br /><font color="#ff1493">8、说明：between的用法,between限制查询数据范围时包括了边界值,not between不包括</font><br />select * from table1 where time between time1 and time2<br />select a,b,c, from table1 where a not between 数值1 and 数值2<br /><br /><font color="#ff1493">9、说明：in 的使用方法<br /></font>select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)<br /><br /><font color="#ff1493">10、说明：两张关联表，删除主表中已经在副表中没有的信息 <br /></font>delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )<br /><br /><font color="#ff1493">11、说明：四表联查问题：</font><br />select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....<br /><br /><font color="#ff1493">12、说明：日程安排提前五分钟提醒 <br /></font>SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())&gt;5<br /><br /><font color="#ff1493">13、说明：一条sql 语句搞定数据库分页</font><br />select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段<br /><br /><font color="#ff1493">14、说明：前10条记录</font><br />select top 10 * form table1 where 范围<br /><br /><font color="#ff1493">15、说明：选择在每一组b值相同的数据中对应的a最大的记录的所有信息</font>(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)<br />select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)<br /><br /><font color="#ff1493">16、说明：包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表</font><br />(select a from tableA ) except (select a from tableB) except (select a from tableC)<br /><br /><font color="#ff1493">17、说明：随机取出10条数据</font><br />select top 10 * from tablename order by newid()<br /><br /><font color="#ff1493">18、说明：随机选择记录</font><br />select newid()<br /><br /><font color="#ff1493">19、说明：删除重复记录</font><br />Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)<br /><br /><font color="#ff1493">20、说明：列出数据库里所有的表名</font><br />select name from sysobjects where type='U' <br /><br /><font color="#ff1493">21、说明：列出表里的所有的</font><br />select name from syscolumns where id=object_id('TableName')<br /><br /><font color="#ff1493">22、说明：列示type、vender、pcs字段，以type字段排列，case可以方便地实现多重选择，类似select 中的case。</font><br />select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type<br />显示结果：<br />type vender pcs<br />电脑 A 1<br />电脑 A 1<br />光盘 B 2<br />光盘 A 2<br />手机 B 3<br />手机 C 3<br /><br /><font color="#ff1493">23、说明：初始化表table1</font><br />TRUNCATE TABLE table1<br /><br /><font color="#ff1493">24、说明：选择从10到15的记录</font><br />select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc<br />　　<br /><font color="#ff1493">随机选择数据库记录的方法（使用Randomize函数，通过SQL语句实现）<br /></font>　　对存储在数据库中的数据来说，随机数特性能给出上面的效果，但它们可能太慢了些。你不能要求ASP“找个随机数”然后打印出来。实际上常见的解决方案是建立如下所示的循环： <br />Randomize <br />RNumber = Int(Rnd*499) +1 <br />　<br />While Not objRec.EOF <br />If objRec("ID") = RNumber THEN <br />... 这里是执行脚本 ... <br />end if <br />objRec.MoveNext <br />Wend <br />　<br />　　这很容易理解。首先，你取出1到500范围之内的一个随机数（假设500就是数据库内记录的总数）。然后，你遍历每一记录来测试ID 的值、检查其是否匹配RNumber。满足条件的话就执行由THEN 关键字开始的那一块代码。假如你的RNumber 等于495，那么要循环一遍数据库花的时间可就长了。虽然500这个数字看起来大了些，但相比更为稳固的企业解决方案这还是个小型数据库了，后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了？ <br />　　采用SQL，你就可以很快地找出准确的记录并且打开一个只包含该记录的recordset，如下所示： <br />Randomize <br />RNumber = Int(Rnd*499) + 1 <br />　<br />SQL = "SELECT * FROM Customers WHERE ID = " &amp; RNumber <br />　<br />set objRec = ObjConn.Execute(SQL) <br />Response.WriteRNumber &amp; " = " &amp; objRec("ID") &amp; " " &amp; objRec("c_email") <br />　<br />　　不必写出RNumber 和ID，你只需要检查匹配情况即可。只要你对以上代码的工作满意，你自可按需操作“随机”记录。Recordset没有包含其他内容，因此你很快就能找到你需要的记录这样就大大降低了处理时间。 <br />再谈随机数 <br />　　现在你下定决心要榨干Random 函数的最后一滴油，那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准Random 示例扩展一下就可以用SQL应对上面两种情况了。 <br />　　为了取出几条随机选择的记录并存放在同一recordset内，你可以存储三个随机数，然后查询数据库获得匹配这些数字的记录： <br />SQL = "SELECT * FROM Customers WHERE ID = " &amp; RNumber &amp; " OR ID = " &amp; RNumber2 &amp; " OR ID = " &amp; RNumber3 <br />　<br />　　假如你想选出10条记录（也许是每次页面装载时的10条链接的列表），你可以用BETWEEN 或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成，但是 SELECT 语句只显示一种可能（这里的ID 是自动生成的号码）： <br />SQL = "SELECT * FROM Customers WHERE ID BETWEEN " &amp; RNumber &amp; " AND " &amp; RNumber &amp; "+ 9" <br /><br />　　注意：以上代码的执行目的不是检查数据库内是否有9条并发记录。<br /><br />　<br /><font color="#ff1493">随机读取若干条记录，测试过</font><br />Access语法：SELECT top 10 * From 表名 ORDER BY Rnd(id)<br />Sql server语法：select top n * from 表名 order by newid()<br />MySql语法：Select * From 表名 Order By rand() Limit n<br />Access左连接语法(最近开发要用左连接,Access帮助什么都没有,网上没有Access的SQL说明,只有自己测试, 现在记下以备后查)<br />语法：Select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...<br /><font color="#ff1493">使用SQL语句 用...代替过长的字符串显示</font><br />语法：<br />SQL数据库：select case when len(field)&gt;10 then left(field,10)+'...' else field end as news_name,news_id from tablename<br />Access数据库：SELECT iif(len(field)&gt;2,left(field,2)+'...',field) FROM tablename; <br />　<br /><font color="#ff1493">Conn.Execute说明</font><br />Execute方法<br />　　该方法用于执行SQL语句。根据SQL语句执行后是否返回记录集，该方法的使用格式分为以下两种：<br />　　　　1．执行SQL查询语句时，将返回查询得到的记录集。用法为：<br />　　　　Set 对象变量名=连接对象.Execute("SQL 查询语言")<br />　　　Execute方法调用后，会自动创建记录集对象，并将查询结果存储在该记录对象中，通过Set方法，将记录集赋给指定的对象保存，以后对象变量就代表了该记录集对象。<br /><br />　　　　2．执行SQL的操作性语言时，没有记录集的返回。此时用法为：<br />　　　　连接对象.Execute "SQL 操作性语句" [, RecordAffected][, Option]<br />　　　　　　·RecordAffected 为可选项，此出可放置一个变量，SQL语句执行后，所生效的记录数会自动保存到该变量中。通过访问该变量，就可知道SQL语句队多少条记录进行了操作。<br />　　　　　　·Option 可选项，该参数的取值通常为adCMDText，它用于告诉ADO，应该将Execute方法之后的第一个字符解释为命令文本。通过指定该参数，可使执行更高效。<br /><br /><font color="#ff1493">·BeginTrans、RollbackTrans、CommitTrans方法</font><br />　　这三个方法是连接对象提供的用于事务处理的方法。BeginTrans用于开始一个事物；RollbackTrans用于回滚事务；CommitTrans用于提交所有的事务处理结果，即确认事务的处理。<br />　　事务处理可以将一组操作视为一个整体，只有全部语句都成功执行后，事务处理才算成功；若其中有一个语句执行失败，则整个处理就算失败，并恢复到处里前的状态。<br />　　BeginTrans和CommitTrans用于标记事务的开始和结束，在这两个之间的语句，就是作为事务处理的语句。判断事务处理是否成功，可通过连接对象的Error集合来实现，若Error集合的成员个数不为0，则说明有错误发生，事务处理失败。Error集合中的每一个Error对象，代表一个错误信息。<img src ="http://www.blogjava.net/zhhp1314520/aggbug/75998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhhp1314520/" target="_blank">捕风</a> 2006-10-18 17:50 <a href="http://www.blogjava.net/zhhp1314520/articles/sql_all.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>流行开源数据库hsql</title><link>http://www.blogjava.net/zhhp1314520/articles/hsql_1.html</link><dc:creator>捕风</dc:creator><author>捕风</author><pubDate>Mon, 16 Oct 2006 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/zhhp1314520/articles/hsql_1.html</guid><wfw:comment>http://www.blogjava.net/zhhp1314520/comments/75427.html</wfw:comment><comments>http://www.blogjava.net/zhhp1314520/articles/hsql_1.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhhp1314520/comments/commentRss/75427.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhhp1314520/services/trackbacks/75427.html</trackback:ping><description><![CDATA[前言：该文章只是简单介绍一下hsql的入门内容，如果想仔细了解的话，参考官方帮助文档最为有用。<br />    修正添加了第四点。<br /><br />一、简介：<br />hsql 数据库是一款纯Java编写的免费数据库，许可是BSD-style的协议，如果你是使用Java编程的话，不凡考虑一下使用它，相对其他数据库来说，其体积小，才563kb。仅一个hsqldb.jar文件就包括了数据库引擎，数据库驱动，还有其他用户界面操作等内容。在Java开源世界里，hsql是极为受欢迎的（就Java本身来说），JBoss应用程序服务器默认也提供了这个数据库引擎。由于其体积小的原因，又是纯Java设计，又支持 SQL99，SQL2003大部分的标准，所以也是作为商业应用程序展示的一种选择。请到以下地址下载hsql： <a href="http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_3_3.zip?download">http://prdownloads.sourceforge.net/hsqldb/</a><br /><br />二、使用hsql数据库：<br />1、hsql数据库引擎有几种服务器模式：常用的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-Only数据库。<br />2、最为常用的Server模式：<br />1)首先却换到lib文件夹下，运行java -cp hsqldb.jar org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb<br />执行命令后，将会在db文件夹下创建一个数据库mydb，别名（用于访问数据库）是xdb，如果存在mydb数据库，将会打开它。<br />2)运行数据库界面操作工具：java -cp hsqldb.jar org.hsqldb.util.DatabaseManager<br />在Type 选项里选上相应的服务器模式，这里选择HSQL Database Engine Server模式；Driver不用修改；URL修改为jdbc:hsqldb:hsql://localhost/xdb （主要这里xdb就是上面我们设置的别名）;user里设置用户名，第一次登录时，设置的是管理员的用户名，password设置密码。然后点击Ok。<br />3)第一次运行数据库引擎，创建数据库完毕。好了，你可以打开db文件夹，会发现里面多了几个文件。<br />mydb.properties文件：是关于数据库的属性文件。<br />mydb.script：hsql主要保存的表（这里按hsql的说法是Memory表，就是最为常用的），里面的格式都是文本格式，可以用文本查看，里面的语句都是sql语句，熟悉sql语句的话，你也可以手动修改它。每次运行数据库引擎的话都是从这里加载进内存的。<br />mydb.lck表示数据库处于打开状态。<br />其他的请参看hsqldb包里的手册。<br /><br />3、WebServer模式和Server运行模式基本一样，只是支持了Http等协议，主要用于防火墙，默认端口是9001。启动Server，java -cp hsqldb.jar org.hsqldb.WebServer ...剩余的和上面的一致。<br /><br />4、Servlet模式可以允许你通过Servlet容器来访问数据库，请查看<tt class="filename">hsqlServlet.java的源代码，和WebServer类似。<br /><br />5、另一个值得思考的模式是</tt>Standalone模式：不能通过网络来访问数据库，主要是在一个JVM中使用，那样的话，访问的速度会更加快。虽然文档里面提到主要是用于开发时使用，但是我们可以假设一下，该方法不需要一个引擎类的东西，而类似于打开文件的方式，返回一个Connection对象：<br />Connection c = DriverManager.getConnection("jdbc:hsqldb:file:mydb", "sa", "");<br />将会在当前目录找到mydb数据库相关文件，打开并返回一个Connection对象。该方式有点好处就是可以不使用引擎，在需要的时候操作数据。所以那些对数据库不是特别有要求的，但又需要一个操作数据库的方式的话，可以使用这种方法。对于那些不想额外在数据库引擎花费金钱的话，可以使用这种方法。但是不推荐使用该方法。记得Hibernate里SessionFactory可以使用openSession(Connecttion c)来获得一个Session对象的，因此，在测试或者实际应用的话都可以这样使用。<br /><br />6、Memory-Only 数据库：顾名思义，主要是内存中使用，不用于保存数据。可以用于在内存中交换数据。<br /><br />三、具体的链接与操作的话，和一般的JDBC操作一样。而相应的Server模式的话，连接地址主要你运行数据库界面操作工具时，在URL一栏时默认已经设好了，自己实习一下，对比其中参数。<br /><br />四、实例：<br />在Windows下使用：<br />        由于我们经常使用的是hibernate等orm工具作为数据层，所以很多时候对底层的sql都不再关注。通常我们都交由hibernate等工具来替我们管理数据库连接等内容，经常我们只需要学会运行数据库就足够了。<br />       为了简化操作，我们可以创建一个bat脚本（runhsql.bat）该脚本只需要和hsql.jar在一起，我们通常使用的是server模式：<br />      (1)runhsql.bat的内容：<br />          start  java  -cp  hsqldb.jar  org.hsqldb.Server<br />      (2)server.properties<br />           server.database.0=db/appfuse1<br />           server.dbname.0=appfuse1<br />           server.database.1=db/appfuse2<br />           server.dbname.1=appfuse2<br />     运行runhsql.bat之后，将会在db文件夹下创建两个数据库文件，别名为appfuse1和appfuse2<br />相应的例子：hibernate.xml文件简单配置:<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE hibernate-configuration PUBLIC<br />        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"<br />        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;<br />&lt;hibernate-configuration&gt;<br />    &lt;session-factory&gt;<br />        &lt;property name="hibernate.connection.driver_class"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;<br />        &lt;property name="hibernate.connection.url"&gt;jdbc:hsqldb:hsql://localhost/appfuse1&lt;/property&gt;<br />        &lt;property name="hibernate.connection.username"&gt;sa&lt;/property&gt;<br />        &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.HSQLDialect&lt;/property&gt;<br />        <br />        &lt;property name="show_sql"&gt;true&lt;/property&gt;<br />        <br />        &lt;!-- Enable Hibernate's automatic session context management --&gt;<br />        &lt;property name="current_session_context_class"&gt;thread&lt;/property&gt;<br />        <br />        &lt;!-- Drop and re-create the database schema on startup --&gt;<br />        &lt;property name="hbm2ddl.auto"&gt;create&lt;/property&gt;<br />    &lt;/session-factory&gt;<br />&lt;/hibernate-configuration&gt;       <br />       <br /><br />对这篇文章有什么问题的话，请留言给作者。作者联系地址：<span style="TEXT-DECORATION: underline">Sidney.J.Yellow@gmail.com</span><span style="TEXT-DECORATION: underline"></span><br /><br /><p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=373652</p><img src ="http://www.blogjava.net/zhhp1314520/aggbug/75427.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhhp1314520/" target="_blank">捕风</a> 2006-10-16 15:49 <a href="http://www.blogjava.net/zhhp1314520/articles/hsql_1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hsql使用</title><link>http://www.blogjava.net/zhhp1314520/articles/Hsql_using.html</link><dc:creator>捕风</dc:creator><author>捕风</author><pubDate>Mon, 16 Oct 2006 07:10:00 GMT</pubDate><guid>http://www.blogjava.net/zhhp1314520/articles/Hsql_using.html</guid><wfw:comment>http://www.blogjava.net/zhhp1314520/comments/75419.html</wfw:comment><comments>http://www.blogjava.net/zhhp1314520/articles/Hsql_using.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhhp1314520/comments/commentRss/75419.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhhp1314520/services/trackbacks/75419.html</trackback:ping><description><![CDATA[
		<div class="post" id="article">
				<div class="postText">
						<p>前言：该文章只是简单介绍一下hsql的入门内容，如果想仔细了解的话，参考官方帮助文档最为有用。</p>
						<p>一、简介：<br />hsql 数据库是一款纯Java编写的免费数据库，许可是BSD-style的协议，如果你是使用Java编程的话，不凡考虑一下使用它，相对其他数据库来说，其体积小，才563kb。仅一个hsqldb.jar文件就包括了数据库引擎，数据库驱动，还有其他用户界面操作等内容。在Java开源世界里，hsql是极为受欢迎的（就Java本身来说），JBoss应用程序服务器默认也提供了这个数据库引擎。由于其体积小的原因，又是纯Java设计，又支持 SQL99，SQL2003大部分的标准，所以也是作为商业应用程序展示的一种选择。请到以下地址下载hsql： <a href="http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_3_3.zip?download">http://prdownloads.sourceforge.net/hsqldb/hsqldb_1_7_3_3.zip?download</a></p>
						<p>二、使用hsql数据库：<br />1、hsql数据库引擎有几种服务器模式：常用的Server模式、WebServer模式、Servlet模式、Standlone模式、Memory-Only数据库。<br />2、最为常用的Server模式：<br />1)首先却换到lib文件夹下，运行java -cp hsqldb.jar org.hsqldb.Server -database.0 db/mydb -dbname.0 xdb<br />执行命令后，将会在db文件夹下创建一个数据库mydb，别名（用于访问数据库）是xdb，如果存在mydb数据库，将会打开它。<br />2)运行数据库界面操作工具：java -cp hsqldb.jar org.hsqldb.util.DatabaseManager<br />在Type 选项里选上相应的服务器模式，这里选择HSQL Database Engine Server模式；Driver不用修改；URL修改为jdbc:hsqldb:hsql://localhost/xdb （主要这里xdb就是上面我们设置的别名）;user里设置用户名，第一次登录时，设置的是管理员的用户名，password设置密码。然后点击Ok。<br />3)第一次运行数据库引擎，创建数据库完毕。好了，你可以打开db文件夹，会发现里面多了几个文件。<br />mydb.properties文件：是关于数据库的属性文件。<br />mydb.script：hsql主要保存的表（这里按hsql的说法是Memory表，就是最为常用的），里面的格式都是文本格式，可以用文本查看，里面的语句都是sql语句，熟悉sql语句的话，你也可以手动修改它。每次运行数据库引擎的话都是从这里加载进内存的。<br />mydb.lck表示数据库处于打开状态。<br />其他的请参看hsqldb包里的手册。</p>
						<p>3、WebServer模式和Server运行模式基本一样，只是支持了Http等协议，主要用于防火墙，默认端口是9001。启动Server，java -cp hsqldb.jar org.hsqldb.WebServer ...剩余的和上面的一致。</p>
						<p>4、Servlet模式可以允许你通过Servlet容器来访问数据库，请查看hsqlServlet.java的源代码，和WebServer类似。</p>
						<p>5、另一个值得思考的模式是Standalone模式：不能通过网络来访问数据库，主要是在一个JVM中使用，那样的话，访问的速度会更加快。虽然文档里面提到主要是用于开发时使用，但是我们可以假设一下，该方法不需要一个引擎类的东西，而类似于打开文件的方式，返回一个Connection对象：<br />Connection c = DriverManager.getConnection("jdbc:hsqldb:file:mydb", "sa", "");<br />将会在当前目录找到mydb数据库相关文件，打开并返回一个Connection对象。该方式有点好处就是可以不使用引擎，在需要的时候操作数据。所以那些对数据库不是特别有要求的，但又需要一个操作数据库的方式的话，可以使用这种方法。对于那些不想额外在数据库引擎花费金钱的话，可以使用这种方法。但是不推荐使用该方法。记得Hibernate里SessionFactory可以使用openSession(Connecttion c)来获得一个Session对象的，因此，在测试或者实际应用的话都可以这样使用。</p>
						<p>6、Memory-Only 数据库：顾名思义，主要是内存中使用，不用于保存数据。可以用于在内存中交换数据。</p>
						<p>三、具体的链接与操作的话，和一般的JDBC操作一样。而相应的Server模式的话，连接地址主要你运行数据库界面操作工具时，在URL一栏时默认已经设好了，自己实习一下，对比其中参数。</p>
						<p>这篇文章介绍大致内容很详细，不过也大都是从Hsql的帮助上翻译的，我有必要加入点新鲜的血液。<br />这篇文章美中不足的是缺少实战性，往往初学者第一步都走不出来，比如我。<br />我在实践中遇到的问题是打开数据库管理器怎么也连接不上数据库，总是说<br />java.sql.sqlException Socket create error<br />搞了一个晚上，到第二天早上清醒一下，想起来这个数据库应该在创建库之后，保持那个cmd窗口，在此过程中连接。<br />果然好用，也迈出了开拓Hsql的第一步。</p>
						<p>另外不用在互联网上搜索别的介绍，Hsql自带的guide就已经很详细了。</p>
						<br />
						<br />
						<p id="TBPingURL">Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=472441</p>
				</div>
				<div class="postFoot">
						<script src="http://localhost:82/PromoteIcon.aspx?id=472441">
						</script>
[<a href="javascript:StorePage()">点击此处收藏本文</a>]   whoopee发表于 2005年09月06日 10:54:00 </div>
		</div>
		<!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><rdf:Descriptionrdf:about="http://blog.csdn.net/whoopee/archive/2005/09/06/472441.aspx"dc:identifier="http://blog.csdn.net/whoopee/archive/2005/09/06/472441.aspx"dc:title="HSql的尝试"trackback:ping="http://tb.blog.csdn.net/TrackBack.aspx?PostId=472441" /></rdf:RDF>-->
		<script><![CDATA[unction hide(){showComment();}]]&gt;</script>
		<br />
		<div class="post">
				<div class="postTitle">相关文章：</div>
				<ul class="postText">
						<li>
								<a href="http://blog.csdn.net/jwsh1984/archive/2005/05/11/373652.aspx" target="_blank">流行开源数据库hsql</a> 2005-05-11 <a href="http://blog.csdn.net/jwsh1984/" target="_blank">jwsh1984</a></li>
						<li>
								<a href="http://blog.csdn.net/hoseheart/archive/2003/12/02/21424.aspx" target="_blank">HSQLDB文档(一）</a> 2003-12-02 <a href="http://blog.csdn.net/hoseheart/" target="_blank">hoseheart</a></li>
						<li>
								<a href="http://blog.csdn.net/gojava/archive/2004/09/01/91420.aspx" target="_blank">小巧的hsqldb</a> 2004-09-01 <a href="http://blog.csdn.net/gojava/" target="_blank">gojava</a></li>
						<li>
								<a href="http://blog.csdn.net/JOHNCOOLS/archive/2006/06/21/818543.aspx" target="_blank">数据访问两种模式的比较 </a>2006-06-21 <a href="http://blog.csdn.net/JOHNCOOLS/" target="_blank">JOHNCOOLS</a></li>
						<li>
								<a href="http://blog.csdn.net/sheercony/archive/2004/07/15/41991.aspx" target="_blank">数据库置疑处理</a> 2004-07-15 <a href="http://blog.csdn.net/sheercony/" target="_blank">sheercony</a></li>
				</ul>
		</div>
<img src ="http://www.blogjava.net/zhhp1314520/aggbug/75419.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhhp1314520/" target="_blank">捕风</a> 2006-10-16 15:10 <a href="http://www.blogjava.net/zhhp1314520/articles/Hsql_using.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql批量更新</title><link>http://www.blogjava.net/zhhp1314520/articles/sql_bat.html</link><dc:creator>捕风</dc:creator><author>捕风</author><pubDate>Fri, 13 Oct 2006 08:23:00 GMT</pubDate><guid>http://www.blogjava.net/zhhp1314520/articles/sql_bat.html</guid><wfw:comment>http://www.blogjava.net/zhhp1314520/comments/75022.html</wfw:comment><comments>http://www.blogjava.net/zhhp1314520/articles/sql_bat.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhhp1314520/comments/commentRss/75022.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhhp1314520/services/trackbacks/75022.html</trackback:ping><description><![CDATA[批量更新 <br /><br />　　1、Statement <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" /><span style="COLOR: #000000">　　Statement sm </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> cn.createStatement(); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　sm.addBatch(sql1); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　sm.addBatch(sql2); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　<img src="http://www.blogjava.net/images/dot.gif" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　sm.executeBatch() </span></div><br /><br />　　一个Statement对象，可以执行多个sql语句以后，批量更新。这多个语句可以是delete、update、insert等或兼有 <br /><br />　　2、PreparedStatement <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" /><span style="COLOR: #000000">PreparedStatement ps </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> cn.preparedStatement(sql); <br /><img id="Codehighlighter1_53_104_Open_Image" onclick="this.style.display='none'; Codehighlighter1_53_104_Open_Text.style.display='none'; Codehighlighter1_53_104_Closed_Image.style.display='inline'; Codehighlighter1_53_104_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_53_104_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_53_104_Closed_Text.style.display='none'; Codehighlighter1_53_104_Open_Image.style.display='inline'; Codehighlighter1_53_104_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />　　</span><span id="Codehighlighter1_53_104_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_53_104_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />　　ps.setXXX(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,xxx); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />　　<img src="http://www.blogjava.net/images/dot.gif" /> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />　　ps.addBatch(); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />　　}</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />　　ps.executeBatch(); </span></div><br />　　一个PreparedStatement，可以把一个sql语句，变换参数多次执行，一次更新。<img src ="http://www.blogjava.net/zhhp1314520/aggbug/75022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhhp1314520/" target="_blank">捕风</a> 2006-10-13 16:23 <a href="http://www.blogjava.net/zhhp1314520/articles/sql_bat.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>