﻿<?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/hulizhong/category/38158.html</link><description>----Java's Slave----&lt;br&gt;
***Java's Host***</description><language>zh-cn</language><lastBuildDate>Fri, 24 Apr 2009 00:21:23 GMT</lastBuildDate><pubDate>Fri, 24 Apr 2009 00:21:23 GMT</pubDate><ttl>60</ttl><item><title>转 SQL：char、varchar、text和nchar、nvarchar、ntext的区别 </title><link>http://www.blogjava.net/hulizhong/archive/2009/04/21/266664.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Tue, 21 Apr 2009 01:17:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2009/04/21/266664.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/266664.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2009/04/21/266664.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/266664.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/266664.html</trackback:ping><description><![CDATA[转 http://www.cnblogs.com/kingjiong/archive/2009/03/12/1310908.html<br />
<br />
SQL中char、varchar、text和nchar、nvarchar、ntext的区别<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1、CHAR。CHAR存储定长数据很方便，CHAR字段上的索引效率级高，比如定义char(10)，那么不论你存储的数据是否达到了10个字节，都要占去10个字节的空间。<br />
&nbsp;&nbsp;&nbsp;&nbsp;
2、VARCHAR。存储变长数据，但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的，我们只知道它不可能超过10个字符，把它定义为
VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么&#8220;+1&#8221;呢？这一个字节用于保存实际使用了多大的长度。<br />
&nbsp;&nbsp;&nbsp; 从空间上考虑，用varchar合适；从效率上考虑，用char合适，关键是根据实际情况找到权衡点。<br />
&nbsp;&nbsp;&nbsp; 3、TEXT。text存储可变长度的非Unicode数据，最大长度为2^31-1(2,147,483,647)个字符。<br />
&nbsp;&nbsp;&nbsp;&nbsp;4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个&#8220;N&#8221;。它表示存储的是Unicode数据类型的字符。我们知
道字符中，英文字符只需要一个字节存储就足够了，但汉字众多，需要两个字节存储，英文与汉字同时存在时容易造成混乱，Unicode字符集就是为了解决字
符集这种不兼容的问题而产生的，它所有的字符都用两个字节表示，即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之
间。和char、varchar比较起来，nchar、nvarchar则最多存储4000个字符，不论是英文还是汉字；而char、varchar最多
能存储8000个英文，4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字，较为方便，但在存储英文
时数量上有些损失。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 所以一般来说，如果含有中文字符，用nchar/nvarchar，如果纯英文和数字，用char/varchar。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 如果是存储文章等大段内容的时候，纯英文和数字，用text，含有中文字符的，用ntext。
<br />
<br /><img src ="http://www.blogjava.net/hulizhong/aggbug/266664.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2009-04-21 09:17 <a href="http://www.blogjava.net/hulizhong/archive/2009/04/21/266664.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转 T-SQL之SET ANSI_NULLS</title><link>http://www.blogjava.net/hulizhong/archive/2009/04/17/266191.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Fri, 17 Apr 2009 09:04:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2009/04/17/266191.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/266191.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2009/04/17/266191.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/266191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/266191.html</trackback:ping><description><![CDATA[转 http://www.cnblogs.com/xmaiC/archive/2009/04/15/1436813.html<br />
<br />
<h1 class="postTitle">
<a id="AjaxHolder_ctl01_TitleUrl" class="postTitle2" href="http://www.cnblogs.com/xmaiC/archive/2009/04/15/1436813.html">T-SQL之SET ANSI_NULLS</a>
</h1>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当
SET ANSI_NULLS 为 ON 时，即使 column_name 中包含空值，使用 WHERE column_name = NULL
的 SELECT 语句仍返回零行。即使 column_name 中包含非空值，使用 WHERE column_name &lt;&gt;
NULL 的 SELECT 语句仍会返回零行。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当 SET ANSI_NULLS 为 OFF 时，等于 (=) 和不等于
(&lt;&gt;) 比较运算符不遵守 ISO 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回
column_name 中包含空值的行。使用 WHERE column_name &lt;&gt; NULL 的 SELECT
语句返回列中包含非空值的行。此外，使用 WHERE column_name &lt;&gt; XYZ_value 的 SELECT
语句返回所有不为 XYZ_value 也不为 NULL 的行。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当 SET ANSI_NULLS 为 ON 时，所有对
null 值的比较均取值为 UNKNOWN。当 SET ANSI_NULLS 为 OFF 时，如果数据值为
NULL，则所有数据对空值的比较将取值为 TRUE。如果未指定 SET ANSI_NULLS，则应用当前数据库的 ANSI_NULLS
选项设置。有关 ANSI_NULLS 数据库选项的详细信息，请参阅 ALTER DATABASE (Transact-SQL)
和设置数据库选项。</p>
<p><br />
<span style="color: #ff0000;">仅当某个比较操作数是值为 NULL 的变量或文字 NULL 时，SET ANSI_NULLS ON 才会影响比较。如果比较双方是列或复合表达式，则该设置不会影响比较。<br />
为使脚本按预期运行，不管 ANSI_NULLS 数据库选项或 SET ANSI_NULLS 的设置如何，请在可能包含空值的比较中使用 IS NULL 和 IS NOT NULL。<br />
在执行分布式查询时应将 SET ANSI_NULLS 设置为 ON。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对
计算列或索引视图创建或更改索引时，SET ANSI_NULLS 也必须为 ON。如果 SET ANSI_NULLS 为
OFF，则针对表（包含计算列或索引视图的索引）的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。SQL Server
将返回一个错误消息，该错误消息会列出所有违反所需值的 SET 选项。另外，在执行 SELECT 语句时，如果 SET ANSI_NULLS 为
OFF，则 SQL Server 将忽略计算列或视图的索引值并解析选择操作，就好像表或视图没有这样的索引一样。</span></p>
<span style="color: #000000;">实例：<br />
</span><span id="Code_Open_Text_232516" style="display: inline;"><span style="color: #008080;">--</span><span style="color: #008080;">1.设置ANSI_NULLS为ON时，返回零行</span><span style="color: #008080;"><br />
</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;ANSI_NULLS&nbsp;</span><span style="color: #0000ff;">ON</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">GO</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">SELECT</span><span style="color: #808080;">*</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;xmai&nbsp;</span><span style="color: #0000ff;">WHERE</span><span style="color: #000000;">&nbsp;id</span><span style="color: #808080;">=</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">SELECT</span><span style="color: #808080;">*</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;xmai&nbsp;</span><span style="color: #0000ff;">WHERE</span><span style="color: #000000;">&nbsp;id</span><span style="color: #808080;">&lt;&gt;</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;"><br />
执行结果：<br />
id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name<br />
</span><span style="color: #008080;">--</span><span style="color: #008080;">---------&nbsp;--------------------</span><span style="color: #008080;"><br />
</span><span style="color: #000000;">(</span><span style="font-weight: bold; color: #800000;">0</span><span style="color: #000000;">&nbsp;行受影响)<br />
<br />
id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name<br />
</span><span style="color: #008080;">--</span><span style="color: #008080;">---------&nbsp;--------------------</span><span style="color: #008080;"><br />
</span><span style="color: #000000;">(</span><span style="font-weight: bold; color: #800000;">0</span><span style="color: #000000;">&nbsp;行受影响)<br />
<br />
</span><span style="color: #008080;">--</span><span style="color: #008080;">2设置ANSI_NULLS为OFF时，等于&nbsp;(=)&nbsp;和不等于&nbsp;(&lt;&gt;)&nbsp;比较运算符不遵守&nbsp;ISO&nbsp;标准。</span><span style="color: #008080;"><br />
</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">SET</span><span style="color: #000000;">&nbsp;ANSI_NULLS&nbsp;</span><span style="color: #0000ff;">OFF</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">GO</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">SELECT</span><span style="color: #808080;">*</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;xmai&nbsp;</span><span style="color: #0000ff;">WHERE</span><span style="color: #000000;">&nbsp;id</span><span style="color: #808080;">=</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">SELECT</span><span style="color: #808080;">*</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;xmai&nbsp;</span><span style="color: #0000ff;">WHERE</span><span style="color: #000000;">&nbsp;id</span><span style="color: #808080;">&lt;&gt;</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;"><br />
执行结果：<br />
id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name<br />
</span><span style="color: #008080;">--</span><span style="color: #008080;">---------&nbsp;--------------------</span><span style="color: #008080;"><br />
</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XMAI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
(</span><span style="font-weight: bold; color: #800000;">1</span><span style="color: #000000;">&nbsp;行受影响)<br />
<br />
id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name<br />
</span><span style="color: #008080;">--</span><span style="color: #008080;">---------&nbsp;--------------------</span><span style="color: #008080;"><br />
</span><span style="font-weight: bold; color: #800000;">1984</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">NULL</span><span style="color: #000000;"><br />
</span><span style="font-weight: bold; color: #800000;">2009</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HJ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="font-weight: bold; color: #800000;">2007</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAIHUASHA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
(</span><span style="font-weight: bold; color: #800000;">3</span><span style="color: #000000;">&nbsp;行受影响)<br />
<br />
</span><span style="color: #008080;">--</span><span style="color: #008080;">3.使用WHERE&nbsp;column_name&lt;&gt;XYZ_value的SELECT语句返回所有不为XYZ_value也不为NULL的行。</span><span style="color: #008080;"><br />
</span><span style="color: #0000ff;">SELECT</span><span style="color: #808080;">*</span><span style="color: #0000ff;">FROM</span><span style="color: #000000;">&nbsp;xmai&nbsp;</span><span style="color: #0000ff;">WHERE</span><span style="color: #000000;">&nbsp;id</span><span style="color: #808080;">&lt;&gt;</span><span style="font-weight: bold; color: #800000;">1984</span><span style="color: #000000;"><br />
执行结果：<br />
id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name<br />
</span><span style="color: #008080;">--</span><span style="color: #008080;">---------&nbsp;--------------------</span><span style="color: #008080;"><br />
</span><span style="font-weight: bold; color: #800000;">2009</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HJ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="font-weight: bold; color: #800000;">2007</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAIHUASHA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
(</span><span style="font-weight: bold; color: #800000;">2</span><span style="color: #000000;">&nbsp;行受影响)</span></span><br />
<br /><img src ="http://www.blogjava.net/hulizhong/aggbug/266191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2009-04-17 17:04 <a href="http://www.blogjava.net/hulizhong/archive/2009/04/17/266191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常见数据库分页SQL语句</title><link>http://www.blogjava.net/hulizhong/archive/2009/03/16/260018.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Mon, 16 Mar 2009 06:44:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2009/03/16/260018.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/260018.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2009/03/16/260018.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/260018.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/260018.html</trackback:ping><description><![CDATA[SQL&nbsp;Server&nbsp;<br />
&nbsp;&nbsp;&nbsp; 从数据库表中的第M条记录开始取N条记录，利用Top关键字：注意如果Select语句中既有top，又有order&nbsp;by，则是从排序好的结果集中选择：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;&nbsp;&nbsp;(&nbsp;SELECT&nbsp;Top&nbsp;N&nbsp;*&nbsp;&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;FROM&nbsp;&nbsp;&nbsp;(SELECT&nbsp;Top&nbsp;(M&nbsp;+&nbsp;N&nbsp;-&nbsp;1)&nbsp;*&nbsp;FROM&nbsp;表名称 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Order&nbsp;by&nbsp;主键&nbsp;desc)&nbsp;t1&nbsp;)&nbsp;t2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;by&nbsp;主键&nbsp;asc
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如从表Sys_option（主键为sys_id)中从10条记录还是检索20条记录，语句如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;(&nbsp;SELECT&nbsp;TOP&nbsp;20&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;FROM&nbsp;(SELECT&nbsp;TOP&nbsp;29&nbsp;*&nbsp;FROM&nbsp;Sys_option&nbsp;order&nbsp;by&nbsp;sys_id&nbsp;desc)&nbsp;t1)&nbsp;t2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;by&nbsp;sys_id&nbsp;asc</p>
<p>Oralce数据库<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从数据库表中第M条记录开始检索N条记录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;(SELECT&nbsp;ROWNUM&nbsp;r,t1.*&nbsp;From&nbsp;表名称&nbsp;t1&nbsp;where&nbsp;rownum&nbsp;&lt;&nbsp;M&nbsp;+&nbsp;N)&nbsp;t2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;t2.r&nbsp;&gt;=&nbsp;M<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如从表Sys_option（主键为sys_id)中从10条记录还是检索20条记录，语句如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;(SELECT&nbsp;ROWNUM&nbsp;R,t1.*&nbsp;From&nbsp;Sys_option&nbsp;where&nbsp;rownum&nbsp;&lt;&nbsp;30&nbsp;)&nbsp;t2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Where&nbsp;t2.R&nbsp;&gt;=&nbsp;10</p>
<p>My&nbsp;sql数据库<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;My&nbsp;sql数据库最简单，是利用mysql的LIMIT函数,LIMIT&nbsp;[offset,]&nbsp;rows从数据库表中M条记录开始检索N条记录的语句为：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;表名称&nbsp;LIMIT&nbsp;M,N</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;例如从表Sys_option（主键为sys_id)中从10条记录还是检索20条记录，语句如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;select&nbsp;*&nbsp;from&nbsp;sys_option&nbsp;limit&nbsp;10,20<br />
&nbsp;&nbsp;<img src ="http://www.blogjava.net/hulizhong/aggbug/260018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2009-03-16 14:44 <a href="http://www.blogjava.net/hulizhong/archive/2009/03/16/260018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql精华</title><link>http://www.blogjava.net/hulizhong/archive/2009/03/16/260016.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Mon, 16 Mar 2009 06:38:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2009/03/16/260016.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/260016.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2009/03/16/260016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/260016.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/260016.html</trackback:ping><description><![CDATA[说明：复制表(只复制结构,源表名：a&nbsp;新表名：b)　　&nbsp;
<p>&nbsp;　　SQL:&nbsp;select&nbsp;*&nbsp;into&nbsp;b&nbsp;from&nbsp;a&nbsp;where&nbsp;1&lt;&gt;1&nbsp;</p>
<p>&nbsp;　　说明：拷贝表(拷贝数据,源表名：a&nbsp;目标表名：b)　　&nbsp;</p>
<p>&nbsp;　　SQL:&nbsp;insert&nbsp;into&nbsp;b(a,&nbsp;b,&nbsp;c)&nbsp;select&nbsp;d,e,f&nbsp;from&nbsp;b;&nbsp;</p>
<p>&nbsp;　　说明：显示文章、提交人和最后回复时间　　&nbsp;</p>
<p>&nbsp;　　SQL:&nbsp;select&nbsp;a.title,a.username,b.adddate&nbsp;from&nbsp;table&nbsp;a,(select&nbsp;max(adddate)&nbsp;adddate&nbsp;from&nbsp;table&nbsp;where&nbsp;table.title=a.title)&nbsp;b&nbsp;</p>
<p>&nbsp;　　说明：外连接查询(表名1：a&nbsp;表名2：b)　　&nbsp;</p>
<p>&nbsp;　　SQL:&nbsp;select&nbsp;a.a,&nbsp;a.b,&nbsp;a.c,&nbsp;b.c,&nbsp;b.d,&nbsp;b.f&nbsp;from&nbsp;a&nbsp;LEFT&nbsp;OUT&nbsp;JOIN&nbsp;b&nbsp;ON&nbsp;a.a&nbsp;=&nbsp;b.c&nbsp;</p>
<p>&nbsp;　　说明：日程安排提前五分钟提醒　　&nbsp;</p>
<p>&nbsp;　　SQL:&nbsp;select&nbsp;*&nbsp;from&nbsp;日程安排&nbsp;where&nbsp;datediff('minute',f开始时间,getdate())&gt;5　　&nbsp;</p>
<p>&nbsp;　　说明：两张关联表，删除主表中已经在副表中没有的信息&nbsp;</p>
<p>&nbsp;　　SQL:&nbsp;　　&nbsp;</p>
<p>&nbsp;　　delete&nbsp;from&nbsp;info&nbsp;where&nbsp;not&nbsp;exists&nbsp;(&nbsp;select&nbsp;*&nbsp;from&nbsp;infobz&nbsp;where&nbsp;info.infid=infobz.infid&nbsp;</p>
<p>&nbsp;　　说明：--&nbsp;</p>
<p>&nbsp;　　SQL:&nbsp;　　&nbsp;</p>
<p>&nbsp;　　SELECT&nbsp;A.NUM,&nbsp;A.NAME,&nbsp;B.UPD_DATE,&nbsp;B.PREV_UPD_DATE&nbsp;</p>
<p>&nbsp;　　&nbsp;FROM&nbsp;TABLE1,&nbsp;</p>
<p>&nbsp;　　&nbsp;(SELECT&nbsp;X.NUM,&nbsp;X.UPD_DATE,&nbsp;Y.UPD_DATE&nbsp;PREV_UPD_DATE&nbsp;</p>
<p>&nbsp;　　&nbsp;FROM&nbsp;(SELECT&nbsp;NUM,&nbsp;UPD_DATE,&nbsp;INBOUND_QTY,&nbsp;STOCK_ONHAND&nbsp;</p>
<p>&nbsp;　　&nbsp;FROM&nbsp;TABLE2&nbsp;</p>
<p>&nbsp;　　&nbsp;WHERE&nbsp;TO_CHAR(UPD_DATE,'YYYY/MM')&nbsp;=&nbsp;TO_CHAR(SYSDATE,&nbsp;'YYYY/MM'))&nbsp;X,&nbsp;</p>
<p>&nbsp;　　&nbsp;(SELECT&nbsp;NUM,&nbsp;UPD_DATE,&nbsp;STOCK_ONHAND&nbsp;</p>
<p>&nbsp;　　&nbsp;FROM&nbsp;TABLE2&nbsp;</p>
<p>&nbsp;　　&nbsp;WHERE&nbsp;TO_CHAR(UPD_DATE,'YYYY/MM')&nbsp;=&nbsp;</p>
<p>&nbsp;　　&nbsp;TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,&nbsp;'YYYY/MM')&nbsp;&amp;brvbar;&amp;brvbar;&nbsp;'/01','YYYY/MM/DD')&nbsp;-&nbsp;1,&nbsp;'YYYY/MM')&nbsp;Y,&nbsp;</p>
<p>&nbsp;　　&nbsp;WHERE&nbsp;X.NUM&nbsp;=&nbsp;Y.NUM&nbsp;（+）&nbsp;</p>
<p>&nbsp;　　&nbsp;AND&nbsp;X.INBOUND_QTY&nbsp;+&nbsp;NVL(Y.STOCK_ONHAND,0)&nbsp;&lt;&gt;&nbsp;X.STOCK_ONHAND&nbsp;B&nbsp;</p>
<p>&nbsp;　　WHERE&nbsp;A.NUM&nbsp;=&nbsp;B.NUM&nbsp;</p>
<p>&nbsp;　　说明：--&nbsp;</p>
<p>&nbsp;　　SQL:&nbsp;　　&nbsp;</p>
<p>&nbsp;
select&nbsp;*&nbsp;from&nbsp;studentinfo&nbsp;where&nbsp;not&nbsp;exists(select&nbsp;*&nbsp;from&nbsp;student&nbsp;where&nbsp;studentinfo.id=student.id)&nbsp;and&nbsp;系
名称='"&amp;strdepartmentname&amp;"'&nbsp;and&nbsp;专业名称='"&amp;strprofessionname&amp;
amp;"'&nbsp;order&nbsp;by&nbsp;性别,生源地,高考总成绩&nbsp;</p>
<p>&nbsp;　　说明：&nbsp;</p>
<p>&nbsp;　　从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源）&nbsp;</p>
<p>&nbsp;　　SQL:&nbsp;　&nbsp;</p>
<p>&nbsp;　　SELECT&nbsp;a.userper,&nbsp;a.tel,&nbsp;a.standfee,&nbsp;TO_CHAR(a.telfeedate,&nbsp;'yyyy')&nbsp;AS&nbsp;telyear,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'01',&nbsp;a.factration))&nbsp;AS&nbsp;JAN,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'02',&nbsp;a.factration))&nbsp;AS&nbsp;FRI,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'03',&nbsp;a.factration))&nbsp;AS&nbsp;MAR,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'04',&nbsp;a.factration))&nbsp;AS&nbsp;APR,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'05',&nbsp;a.factration))&nbsp;AS&nbsp;MAY,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'06',&nbsp;a.factration))&nbsp;AS&nbsp;JUE,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'07',&nbsp;a.factration))&nbsp;AS&nbsp;JUL,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'08',&nbsp;a.factration))&nbsp;AS&nbsp;AGU,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'09',&nbsp;a.factration))&nbsp;AS&nbsp;SEP,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'10',&nbsp;a.factration))&nbsp;AS&nbsp;OCT,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'11',&nbsp;a.factration))&nbsp;AS&nbsp;NOV,&nbsp;</p>
<p>&nbsp;　　&nbsp;SUM(decode(TO_CHAR(a.telfeedate,&nbsp;'mm'),&nbsp;'12',&nbsp;a.factration))&nbsp;AS&nbsp;DEC&nbsp;</p>
<p>&nbsp;　　FROM&nbsp;(SELECT&nbsp;a.userper,&nbsp;a.tel,&nbsp;a.standfee,&nbsp;b.telfeedate,&nbsp;b.factration&nbsp;</p>
<p>&nbsp;　　&nbsp;FROM&nbsp;TELFEESTAND&nbsp;a,&nbsp;TELFEE&nbsp;b&nbsp;</p>
<p>&nbsp;　　&nbsp;WHERE&nbsp;a.tel&nbsp;=&nbsp;b.telfax)&nbsp;a&nbsp;</p>
<p>&nbsp;　　GROUP&nbsp;BY&nbsp;a.userper,&nbsp;a.tel,&nbsp;a.standfee,&nbsp;TO_CHAR(a.telfeedate,&nbsp;'yyyy')&nbsp;</p>
<p>&nbsp;　　说明：四表联查问题：　　&nbsp;</p>
<p>&nbsp;　　SQL:&nbsp;select&nbsp;*&nbsp;from&nbsp;a&nbsp;left&nbsp;inner&nbsp;join&nbsp;b&nbsp;on&nbsp;a.a=b.b&nbsp;right&nbsp;inner&nbsp;join&nbsp;c&nbsp;on&nbsp;a.a=c.c&nbsp;inner&nbsp;join&nbsp;d&nbsp;on&nbsp;a.a=d.d&nbsp;where&nbsp;.....&nbsp;</p>
<p>&nbsp;　　说明：得到表中最小的未使用的ID号&nbsp;</p>
<p>&nbsp;　　SQL:　&nbsp;</p>
<p>&nbsp;　　SELECT&nbsp;(CASE&nbsp;WHEN&nbsp;EXISTS(SELECT&nbsp;*&nbsp;FROM&nbsp;Handle&nbsp;b&nbsp;WHERE&nbsp;b.HandleID&nbsp;=&nbsp;1)&nbsp;THEN&nbsp;MIN(HandleID)&nbsp;+&nbsp;1&nbsp;ELSE&nbsp;1&nbsp;END)&nbsp;as&nbsp;HandleID&nbsp;</p>
<p>&nbsp;　　&nbsp;FROM&nbsp;Handle&nbsp;</p>
&nbsp;　　&nbsp;WHERE&nbsp;NOT&nbsp;HandleID&nbsp;IN&nbsp;(SELECT&nbsp;a.HandleID&nbsp;-&nbsp;1&nbsp;FROM&nbsp;Handle&nbsp;a)<img src ="http://www.blogjava.net/hulizhong/aggbug/260016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2009-03-16 14:38 <a href="http://www.blogjava.net/hulizhong/archive/2009/03/16/260016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql group by 与 having的用法</title><link>http://www.blogjava.net/hulizhong/archive/2009/03/08/258429.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Sun, 08 Mar 2009 02:02:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2009/03/08/258429.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/258429.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2009/03/08/258429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/258429.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/258429.html</trackback:ping><description><![CDATA[转 http://www.cnblogs.com/myhsg/archive/2008/08/05/1261386.html<br />
<p>1. GROUP BY 是分组查询, 一般 GROUP BY 是<span style="color: red">和聚合函数配合使用</span></p>
<p style="color: red">group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面（重要）<br />
</p>
<p>例如,有如下数据库表：</p>
<p>A&nbsp;&nbsp;&nbsp; B <br />
1&nbsp;&nbsp;&nbsp; abc <br />
1&nbsp;&nbsp;&nbsp; bcd <br />
</p>
<p>1&nbsp;&nbsp;&nbsp; asdfg</p>
<p>&nbsp;如果有如下查询语句（<span style="color: red">该语句是错误的，原因见前面的原则</span>）</p>
<p>select A,B from table group by A&nbsp; <br />
</p>
<p>该查询语句的意图是想得到如下结果(<span style="color: red">当然只是一相情愿</span>) <br />
</p>
<p>A&nbsp;&nbsp;&nbsp;&nbsp; B <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; abc <br />
1&nbsp;&nbsp;&nbsp;&nbsp; bcd <br />
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asdfg&nbsp; </p>
<p>右边3条如何变成一条,所以需要用到聚合函数，如下(<span style="color: red">下面是正确的写法</span>):</p>
<p>select A,count(B) as 数量 from table group by A <br />
这样的结果就是 <br />
A&nbsp; &nbsp; 数量 <br />
1&nbsp;&nbsp;&nbsp; 3&nbsp; <br />
</p>
<p>&nbsp;</p>
<p>2. Having</p>
<p>where 子句的作用是在<span style="color: red">对查询结果进行分组前</span>，将不符合where条件的行去掉，即在分组之前过滤数据，<span style="color: red">条件中不能包含聚组函数</span>，使用where条件<span style="color: red">显示特定的行</span>。<br />
</p>
<p>having 子句的作用是筛选满足条件的组，即<span style="color: red">在分组之后过滤数据</span>，<span style="color: red">条件中经常包含聚组函数</span>，使用having 条件<span style="color: red">显示特定的组</span>，也可以使用多个分组标准进行分组。</p>
<p>having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。通常，你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值，就如你在SELECT语句中做的那样。例如：<br />
</p>
<p>SELECT A COUNT(B) FROM TABLE GROUP BY A HAVING COUNT(B)&gt;2</p><img src ="http://www.blogjava.net/hulizhong/aggbug/258429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2009-03-08 10:02 <a href="http://www.blogjava.net/hulizhong/archive/2009/03/08/258429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql中exits和in的区别</title><link>http://www.blogjava.net/hulizhong/archive/2009/03/07/258369.html</link><dc:creator>二胡</dc:creator><author>二胡</author><pubDate>Sat, 07 Mar 2009 07:56:00 GMT</pubDate><guid>http://www.blogjava.net/hulizhong/archive/2009/03/07/258369.html</guid><wfw:comment>http://www.blogjava.net/hulizhong/comments/258369.html</wfw:comment><comments>http://www.blogjava.net/hulizhong/archive/2009/03/07/258369.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hulizhong/comments/commentRss/258369.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hulizhong/services/trackbacks/258369.html</trackback:ping><description><![CDATA[转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html<br />
<p>in 和 exists也是很好区别的.</p>
<p>in 是一个集合运算符.</p>
<p>a in {a,c,d,s,d....}</p>
<p>这个运算中,前面是一个元素,后面是一个集合,集合中的元素类型是和前面的元素一样的. </p>
<p>而exists是一个存在判断,如果后面的查询中有结果,则exists为真,否则为假.</p>
<p>in 运算用在语句中,它后面带的select 一定是选一个字段,而不是select *.</p>
<p>比如说你要判断某班是否存在一个名为"小明"的学生,你可以用in 运算:</p>
<p>"小明" in (select sname from student)</p>
<p>这样(select sname from student) 返回的是一个全班姓名的集合,in用于判断"小明"是否为此集合中的一个数据;</p>
<p>同时,你也可以用exists语句:</p>
<p>exists (select * from student where sname="小明") </p>
<p>&nbsp;</p>
<p>这两个涵数是差不多的, 但是由于优化方案的不同, 通常NOT EXISTS要比NOT IN 要快, 因为NOT EXISTS可以使用结合算法而NOT IN　就不行了，而EXISTS则不如IN快, 因为这时候IN可能更多的使用结合算法.</p>
<p>&nbsp;</p>
<p>select * from 表A where exists(select * from 表B where 表B.id=表A.id) </p>
<p>这句相当于 </p>
<p>select * from 表A where id in (select id from 表B) </p>
<p><br />
对于表A的每一条数据,都执行select * from 表B where 表B.id=表A.id的存在性判断,如果表B中存在表A当前行相同的id,则exists为真,该行显示,否则不显示</p>
<p><br />
exits适合内小外大的查询，in适合内大外小的查询 </p>
<p>&nbsp;</p>
<p>IN <br />
确定给定的值是否与子查询或列表中的值相匹配。 </p>
<p>EXISTS <br />
指定一个子查询，检测行的存在。 </p>
<p>比较使用 EXISTS 和 IN 的查询 </p>
<p>这个例子比较了两个语义类似的查询。第一个查询使用 EXISTS 而第二个查询使用 IN。注意两个查询返回相同的信息。 </p>
<p>USE pubs <br />
GO <br />
SELECT DISTINCT pub_name <br />
FROM publishers <br />
WHERE EXISTS <br />
(SELECT * <br />
FROM titles <br />
WHERE pub_id = publishers.pub_id <br />
AND type = 'business') <br />
GO </p>
<p>-- Or, using the IN clause: </p>
<p>USE pubs <br />
GO <br />
SELECT distinct pub_name <br />
FROM publishers <br />
WHERE pub_id IN <br />
(SELECT pub_id <br />
FROM titles <br />
WHERE type = 'business') <br />
GO </p>
<p>下面是任一查询的结果集： </p>
<p>pub_name <br />
---------------------------------------- <br />
Algodata Infosystems <br />
New Moon Books </p>
<p>(2 row(s) affected)</p>
<p>&nbsp;</p>
<p>exits 相当于存在量词：表示集合存在,也就是集合不为空只作用一个集合.例如 exist P 表示P不空时为真; not exist P表示p为空时 为真 in表示一个标量和一元关系的关系。例如：s in P表示当s与P中的某个值相等时 为真; s not in P 表示s与P中的每一个值都不相等时 为真</p><img src ="http://www.blogjava.net/hulizhong/aggbug/258369.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hulizhong/" target="_blank">二胡</a> 2009-03-07 15:56 <a href="http://www.blogjava.net/hulizhong/archive/2009/03/07/258369.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>