﻿<?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-如何学好java-随笔分类-sql 总结</title><link>http://www.blogjava.net/wshsdlau/category/51795.html</link><description>如何学好java，其实很简单，只要用心体会，慢慢积累！</description><language>zh-cn</language><lastBuildDate>Fri, 25 May 2012 05:55:19 GMT</lastBuildDate><pubDate>Fri, 25 May 2012 05:55:19 GMT</pubDate><ttl>60</ttl><item><title>oracle数据库的配置</title><link>http://www.blogjava.net/wshsdlau/archive/2012/02/09/379124.html</link><dc:creator>哈希</dc:creator><author>哈希</author><pubDate>Thu, 09 Feb 2012 03:56:00 GMT</pubDate><guid>http://www.blogjava.net/wshsdlau/archive/2012/02/09/379124.html</guid><wfw:comment>http://www.blogjava.net/wshsdlau/comments/379124.html</wfw:comment><comments>http://www.blogjava.net/wshsdlau/archive/2012/02/09/379124.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshsdlau/comments/commentRss/379124.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshsdlau/services/trackbacks/379124.html</trackback:ping><description><![CDATA[<h1 style="margin: 17pt 0cm 16.5pt"><span lang="EN-US"><font face="Times New Roman">oracle</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据库的配置</span></h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-outline-level: 1"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一、</span><span lang="EN-US"><font face="Times New Roman">Oracle</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的配置</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; mso-outline-level: 1"><span lang="EN-US"><font face="Times New Roman">1</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、配置</span><span lang="EN-US"><font face="Times New Roman">net manager</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><span style="mso-spacerun: yes"><font face="Times New Roman">&nbsp; </font></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">依次选择开始&#8212;</span><span lang="EN-US"><font face="Times New Roman">&gt;Oracle &#8211; OraHome92</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#8212;</span><span lang="EN-US"><font face="Times New Roman">&gt;Configuration and Migration Tools</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&#8212;</span><span lang="EN-US"><font face="Times New Roman">&gt;Net Manager</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"></font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">选择本地&#8212;</span><span lang="EN-US"><font face="Times New Roman">&gt;</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务命名，点击左侧绿色加号</span><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输入</span><span lang="EN-US"><font face="Times New Roman">Net</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务名</span><span lang="EN-US"><font face="Times New Roman"> 172.30.4.205_ora91 </font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点击下一步</span><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">选择</span><span lang="EN-US"><font face="Times New Roman">TCP/IP</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span><span lang="EN-US"><font face="Times New Roman">Internet</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">协议）</span><font face="Times New Roman"> </font><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点击下一步</span><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输入主机名</span><span lang="EN-US"><font face="Times New Roman">172.30.4.205 </font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点击下一步</span><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">选择</span><span lang="EN-US"><font face="Times New Roman">(Oracle8i</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或更高版本</span><span lang="EN-US"><font face="Times New Roman">)</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">服务名：</span><span lang="EN-US"><font face="Times New Roman">ora91<span style="mso-spacerun: yes">&nbsp; </span></font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点击下一步</span><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点击测试</span><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">选择更改登陆，输入用户名</span><span lang="EN-US"><font face="Times New Roman">xiecha</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，口令</span><span lang="EN-US"><font face="Times New Roman">xiecha</font></span><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span lang="EN-US"><o:p><font face="Times New Roman"></font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点击确定，出现测试成功后选择关闭</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点击完成</span><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">保存网络配置</span><span lang="EN-US"><o:p><font face="Times New Roman">&nbsp;<br />参见网址：<a href="http://wenku.baidu.com/view/7685da64783e0912a2162aa9.html">http://wenku.baidu.com/view/7685da64783e0912a2162aa9.html</a></font></o:p></span></p> <img src ="http://www.blogjava.net/wshsdlau/aggbug/379124.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshsdlau/" target="_blank">哈希</a> 2012-02-09 11:56 <a href="http://www.blogjava.net/wshsdlau/archive/2012/02/09/379124.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PLSQL8.o破解码</title><link>http://www.blogjava.net/wshsdlau/archive/2012/01/18/379125.html</link><dc:creator>哈希</dc:creator><author>哈希</author><pubDate>Wed, 18 Jan 2012 10:00:00 GMT</pubDate><guid>http://www.blogjava.net/wshsdlau/archive/2012/01/18/379125.html</guid><wfw:comment>http://www.blogjava.net/wshsdlau/comments/379125.html</wfw:comment><comments>http://www.blogjava.net/wshsdlau/archive/2012/01/18/379125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshsdlau/comments/commentRss/379125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshsdlau/services/trackbacks/379125.html</trackback:ping><description><![CDATA[PL/SQL Developer是一个集成开发环境，专门面向Oracle数据库存储程序单元的开发。如今，有越来越多的商业逻辑和应用逻辑转向了Oracle Server，因此，PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力，充分发挥Oracle应用程序开发过程中的主要优势。PL/SQL(Procedural Language/SQL)是一种过程化语言，属于第三代语言，它与C、C++、Java等语言一样关注于处理细节，可以用来实现比较复杂的业务逻辑。它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中，使PL/SQL成为一个功能强大的事务处理语言。在甲骨文数据库管理方面，PL/SQL是对结构化查询语言（SQL）的过程语言扩展。PL/SQL的目的是联合数据库语言和过程语言。PL/SQL的基本单位叫做一个区段，由三个部份组成：一个申明部份，一个可运行部份，和排除－构建部分。　因为PL/SQL允许混合SQL申明和过程结构，因此可以在将申明发送到甲骨文系统去执行之前使用PL/SQL区段和副程序来组合SQL申明，没有PL/SQL，甲骨文需要就每次处理SQL申明，在网络环境中，这将影响交通流量，而且增加响应时间。PL/SQL区段只被编译一次并且以可运行的形式储存，以降低响应时间。<br />Enhancements in PL/SQL Developer 8.0.4<br />======================================<br />* SQL Window would always print SQL text, disregarding "Print SQL"<br />&nbsp;&nbsp;preference<br />* Searching within special text (strings, comments) could be slow<br />* Key Configuration preference could reset to default instead of<br />&nbsp;&nbsp;using the defined keys when using multiple preference sets<br />* Export to Excel would interpret data beginning with = as formula<br />* Column names starting with a digit were not implicitly quoted in<br />&nbsp;&nbsp;SQL statements<br />* Fixed issue with search in selection where incorrect characters<br />&nbsp;&nbsp;could be replaced<br />* Duplicate items removed from description window<br />* View/Edit Data for tables with an owner with special characters<br />&nbsp;&nbsp;would not add quotes to the owner<br />* UTFE characters were displayed incorrectly when Unicode support<br />&nbsp;&nbsp;was enabled<br />* Loading the Macro Library could fail on Windows 7/Vista, <br />&nbsp;&nbsp;resulting in a "list index out of bounds" error message<br />* Debugger could hang after an exception on oracle11g<br />* Code Assistant can now complete database link names<br />* Copy all to Excel in the SQL Window would not have correct<br />&nbsp;&nbsp;formatting on the second sheet<br />* To-Do Item List was not up-to-date when opening a package spec &amp;<br />&nbsp;&nbsp;body<br /><a title="在新窗口打开图片" href="http://www.xhs0923.cn/download.asp?id=46" target="_blank"></a><br />下载地址如下<br />源程序：<a href="http://allroundautomations.swmirror.com/plsqldev804.exe" target="_blank" rel="external">http://allroundautomations.swmirror.com/plsqldev804.exe</a><br />语言文件及手册：<a href="http://www.allroundautomations.com/plsqldevlang/80/chinese.exe" target="_blank" rel="external">http://www.allroundautomations.com/plsqldevlang/80/chinese.exe</a><br />注册信息如下<br />product code：kfqtle46lqzbbvlzuvsrutst66yn6m7kl8s2trrtsapr<br />password：xs374ca<br />serial number：1775341736<br /> <img src ="http://www.blogjava.net/wshsdlau/aggbug/379125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshsdlau/" target="_blank">哈希</a> 2012-01-18 18:00 <a href="http://www.blogjava.net/wshsdlau/archive/2012/01/18/379125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库操作</title><link>http://www.blogjava.net/wshsdlau/archive/2011/12/17/379134.html</link><dc:creator>哈希</dc:creator><author>哈希</author><pubDate>Sat, 17 Dec 2011 08:00:00 GMT</pubDate><guid>http://www.blogjava.net/wshsdlau/archive/2011/12/17/379134.html</guid><wfw:comment>http://www.blogjava.net/wshsdlau/comments/379134.html</wfw:comment><comments>http://www.blogjava.net/wshsdlau/archive/2011/12/17/379134.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshsdlau/comments/commentRss/379134.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshsdlau/services/trackbacks/379134.html</trackback:ping><description><![CDATA[--修改TB_C_ACCOUNT_INFO中金账户信息，增加字段：收款人名称、收款人电话。<br />--返厂单表 TB_E_BACKFACTORY_BILLS 删除字段：基础金价、产成品ID&nbsp; CHAR(14 BYTE)<br />--alter table TB_E_BACKFACTORY_BILLS drop column CREATETIME;&nbsp;&nbsp; <br />--alter table TB_E_BACKFACTORY_BILLS add CREATETIME CHAR(14 BYTE) not null;<br />--2&nbsp;alter table TB_E_BACKFACTORY_BILLS drop column FINISH_PRODUCT_ID;<br />alter table TB_E_BACKFACTORY_BILLS add FACTORY VARCHAR2(64) not null;<br />--3alter table TB_E_BACKFACTORY_BILLS add PAYEENAME VARCHAR2(64) not null;<br />&nbsp;--alter table TB_E_BACKFACTORY_BILLS add FACTORY VARCHAR2(64);<br />&nbsp;--alter table TB_E_BACKFACTORY_BILLS add description VARCHAR2(64);<br />--comment on column tb_e_backfactory_bills.description is '备注';&nbsp;&nbsp;&nbsp;&nbsp; "CREATETIME"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CHAR(14 BYTE) NOT NULL ENABLE,<br />--4&nbsp;alter table TB_E_BACKFACTORY_BILLS add PAYEETEL VARCHAR2(30) not null;<br />--5&nbsp;alter table TB_E_BACKFACTORY_BILLS add ACCOUNT VARCHAR2(64) not null;<br />--6&nbsp;alter table TB_E_BACKFACTORY_BILLS add RETURNDATE CHAR(14) not null;<br />--7&nbsp;comment on column TB_E_BACKFACTORY_BILLS.PAYEENAME is '收款人名称';<br />--8&nbsp;comment on column TB_E_BACKFACTORY_BILLS.PAYEETEL is '收款人电话';<br />--9&nbsp;comment on column TB_E_BACKFACTORY_BILLS.ACCOUNT is '银行帐号';<br />--10&nbsp;comment on column TB_E_BACKFACTORY_BILLS.RETURNDATE is '返厂日期';<br />--11alter table TB_L_FINPRODU_FINISH_PRODUCT drop column REMARK<br />--12&nbsp;alter table TB_L_FINPRODU_FINISH_PRODUCT modify AGENCYBUYPRICE default 0 not null;<br />--13&nbsp;alter table TB_L_FINPRODU_FINISH_PRODUCT add AGENCYBUYTOTAL NUMBER(15,4) default 0 not null;<br />--14&nbsp;alter table TB_L_FINPRODU_FINISH_PRODUCT add BASEPRICE NUMBER(15,4) default 0 not null;<br />--15&nbsp;alter table TB_L_FINPRODU_FINISH_PRODUCT add BASEPRICETOTAL NUMBER(15,4) default 0 not null;<br />--16&nbsp;comment on column TB_L_FINPRODU_FINISH_PRODUCT.AGENCYBUYTOTAL is '代回购价格合计';<br />--17&nbsp;comment on column TB_L_FINPRODU_FINISH_PRODUCT.BASEPRICE is '基础价格';<br />--18comment on column TB_L_FINPRODU_FINISH_PRODUCT.BASEPRICETOTAL is '基础价格合计';<br />--0alter table TB_C_ACCOUNT_INFO add RECEIVERNAME VARCHAR2(64) not null;<br />--alter table TB_C_ACCOUNT_INFO add RECEIVERTELEPHONE VARCHAR2(64) ;<br />---comment on column TB_C_ACCOUNT_INFO.RECEIVERNAME is '收款人名称'; <img src ="http://www.blogjava.net/wshsdlau/aggbug/379134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshsdlau/" target="_blank">哈希</a> 2011-12-17 16:00 <a href="http://www.blogjava.net/wshsdlau/archive/2011/12/17/379134.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB2行转列</title><link>http://www.blogjava.net/wshsdlau/archive/2011/12/07/379141.html</link><dc:creator>哈希</dc:creator><author>哈希</author><pubDate>Wed, 07 Dec 2011 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/wshsdlau/archive/2011/12/07/379141.html</guid><wfw:comment>http://www.blogjava.net/wshsdlau/comments/379141.html</wfw:comment><comments>http://www.blogjava.net/wshsdlau/archive/2011/12/07/379141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshsdlau/comments/commentRss/379141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshsdlau/services/trackbacks/379141.html</trackback:ping><description><![CDATA[<p align="right">&nbsp;</p>
<p><span style="font-size: small; font-family: monospace"><span></p>
<div class="dp-highlighter nogutter bg_c-sharp:nogutter:nocontrols">
<div class="bar"></div>
<ol class="dp-c"><li class="alt"><span>班级&nbsp;&nbsp;科目&nbsp;&nbsp;&nbsp;分数&nbsp;&nbsp;</span></li><li class=""><span>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;语文&nbsp;&nbsp;&nbsp;8800&nbsp;&nbsp;</span></li><li class="alt"><span>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数学&nbsp;&nbsp;&nbsp;8420&nbsp;&nbsp;</span></li><li class=""><span>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;英语&nbsp;&nbsp;&nbsp;7812&nbsp;&nbsp;</span></li><li class="alt"><span>&#8230;&#8230;&nbsp;&nbsp;</span></li><li class=""><span>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;语文&nbsp;&nbsp;&nbsp;8715&nbsp;&nbsp;</span></li><li class="alt"><span>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数学&nbsp;&nbsp;&nbsp;8511&nbsp;&nbsp;</span></li><li class=""><span>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;英语&nbsp;&nbsp;&nbsp;8512&nbsp;&nbsp;</span></li><li class="alt"><span>&#8230;&#8230;&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;</span></li><li class=""><span>要求转换成下面这样的结果&nbsp;&nbsp;</span></li><li class="alt"><span>班级&nbsp;&nbsp;&nbsp;&nbsp;语文&nbsp;&nbsp;&nbsp;&nbsp;数学&nbsp;&nbsp;&nbsp;&nbsp;英语&nbsp;&nbsp;</span></li><li class=""><span>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8800&nbsp;&nbsp;&nbsp;&nbsp;8420&nbsp;&nbsp;&nbsp;&nbsp;7812&nbsp;&nbsp;</span></li><li class="alt"><span>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8715&nbsp;&nbsp;&nbsp;&nbsp;8511&nbsp;&nbsp;&nbsp;&nbsp;8512&nbsp;&nbsp;</span></li></ol></div>
<p align="right">&nbsp;</span></span></p>
<p>&nbsp;</p>
<p>这是一个非常经典的 4属性的表设计模式，顾名思义，这样的表一般有四列，分别是：<tt>entity_id</tt>, <tt>attribute_name</tt>, <tt>attribute_type, attribute_value ，这样的设计使我们添加字段非常容易，如：我们想添加一个物理成绩是非常简单的，我们只要向表中插入一条记录即可。但是，这样的设计有一个非常严重的问题，那就是：查询难度增加，查询效率非常差。</tt></p>
<p>要想实现上面的查询有一个原则，那就是：通过case语句创造虚拟字段，使结果集成为二维数组，然后应用聚合函数返回单一记录。怎么样？不理解，仔细看看下面的图和分析下面的语句你就理解了。</p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/shangboerds/EntryImages/20091217/row.JPG" /></p>
<p><span style="font-size: small; font-family: monospace"><span></p>
<p align="right">&nbsp;</p>
<div class="dp-highlighter nogutter bg_c-sharp:nogutter:nocontrols">
<div class="bar"></div>
<ol class="dp-c"><li class="alt"><span>create&nbsp;table&nbsp;score&nbsp;&nbsp;</span></li><li class=""><span>(&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;banji&nbsp;integer,&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;kemu&nbsp;varchar(10),&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;fengshu&nbsp;integer&nbsp;&nbsp;</span></li><li class=""><span>)&nbsp;&nbsp;</span></li><li class="alt"><span>go&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>insert&nbsp;into&nbsp;score&nbsp;values&nbsp;&nbsp;</span></li><li class=""><span>(1,&nbsp;</span><span class="string">'语文'</span><span>,&nbsp;8800),&nbsp;&nbsp;</span></span></li><li class="alt"><span>(1,&nbsp;</span><span class="string">'数学'</span><span>,&nbsp;8420),&nbsp;&nbsp;</span></span></li><li class=""><span>(1,&nbsp;</span><span class="string">'英语'</span><span>,&nbsp;7812),&nbsp;&nbsp;</span></span></li><li class="alt"><span>(2,&nbsp;</span><span class="string">'语文'</span><span>,&nbsp;8715),&nbsp;&nbsp;</span></span></li><li class=""><span>(2,&nbsp;</span><span class="string">'数学'</span><span>,&nbsp;8511),&nbsp;&nbsp;</span></span></li><li class="alt"><span>(2,&nbsp;</span><span class="string">'英语'</span><span>,&nbsp;8512)&nbsp;&nbsp;</span></span></li><li class=""><span>go&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;</span></li><li class=""><span>select&nbsp;banji,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max(yuwen)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;语文,&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max(shuxue)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数学,&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max(yingyu)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;英语&nbsp;&nbsp;</span></li><li class=""><span>from&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(select&nbsp;&nbsp;banji,&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span>&nbsp;kemu&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;</span><span class="string">'语文'</span><span>&nbsp;then&nbsp;fengshu&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;0&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&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;yuwen,&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span>&nbsp;kemu&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;</span><span class="string">'数学'</span><span>&nbsp;then&nbsp;fengshu&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;0&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&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;shuxue,&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span>&nbsp;kemu&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;</span><span class="string">'英语'</span><span>&nbsp;then&nbsp;fengshu&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">else</span><span>&nbsp;0&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&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;yingyu&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;score&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;</span><span class="keyword">as</span><span>&nbsp;inner&nbsp;&nbsp;</span></span></li><li class=""><span>group&nbsp;by&nbsp;inner.banji&nbsp;&nbsp;</span></li><li class="alt"><span>order&nbsp;by&nbsp;1&nbsp;&nbsp;</span></li><li class=""><span>go&nbsp;&nbsp;</span></li></ol></div>
<p align="right">&nbsp;</span></span></p>
<p>&nbsp;</p>
<p>你可能正在感叹，这样的解决方案是多么的巧妙，可惜不是我想出来的，在这里，我也不敢把大师的思想据为己有，以上思想来自&lt;SQL语言艺术&gt;的第11章，想了解更全面的信息，大家可以参考。</p>
<p>&nbsp;</p>
<p align="right">&nbsp;</p> <img src ="http://www.blogjava.net/wshsdlau/aggbug/379141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshsdlau/" target="_blank">哈希</a> 2011-12-07 10:36 <a href="http://www.blogjava.net/wshsdlau/archive/2011/12/07/379141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>十四步 干干净净卸载Oracle </title><link>http://www.blogjava.net/wshsdlau/archive/2011/11/30/376834.html</link><dc:creator>哈希</dc:creator><author>哈希</author><pubDate>Wed, 30 Nov 2011 07:30:00 GMT</pubDate><guid>http://www.blogjava.net/wshsdlau/archive/2011/11/30/376834.html</guid><wfw:comment>http://www.blogjava.net/wshsdlau/comments/376834.html</wfw:comment><comments>http://www.blogjava.net/wshsdlau/archive/2011/11/30/376834.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshsdlau/comments/commentRss/376834.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshsdlau/services/trackbacks/376834.html</trackback:ping><description><![CDATA[<div class="blog_content" id="blog_content">
<p>1、 开始－＞设置－＞控制面板－＞管理工具－＞服务 <br />停止所有Oracle服务。 </p>
<p>2、 开始－＞程序－＞Oracle - OraHome81－＞Oracle Installation Products－＞Universal Installer <br />卸装所有Oracle产品，但Universal Installer本身不能被删除 </p>
<p>5、 运行regedit，选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE，按del键删除这个入口。 </p>
<p>6、 运行regedit，选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services，滚动 <br />这个列表，删除所有Oracle入口。 </p>
<p>7、 运行refedit，HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application， <br />删除所有Oracle入口。 </p>
<p>8、 开始－＞设置－＞控制面板－＞系统－＞高级－＞环境变量 <br />删除环境变量CLASSPATH和PATH中有关Oracle的设定 </p>
<p>9、 从桌面上、STARTUP（启动）组、程序菜单中，删除所有有关Oracle的组和图标 </p>
<p>10、 删除\Program Files\Oracle目录 </p>
<p>11、 重新启动计算机，重起后才能完全删除Oracle所在目录 </p>
<p>12、 删除与Oracle有关的文件，选择Oracle所在的缺省目录C:\Oracle，删除这个入口目录及所有子目录，并从Windows 2000目录（一般为C:\WINNT）下删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。 </p>
<p>13、 WIN.INI文件中若有[ORACLE]的标记段，删除该段 </p>
<p>14、 如有必要，删除所有Oracle相关的ODBC的DSN </p></div> <img src ="http://www.blogjava.net/wshsdlau/aggbug/376834.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshsdlau/" target="_blank">哈希</a> 2011-11-30 15:30 <a href="http://www.blogjava.net/wshsdlau/archive/2011/11/30/376834.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>十四步 干干净净卸载Oracle </title><link>http://www.blogjava.net/wshsdlau/archive/2011/11/30/379143.html</link><dc:creator>哈希</dc:creator><author>哈希</author><pubDate>Wed, 30 Nov 2011 07:30:00 GMT</pubDate><guid>http://www.blogjava.net/wshsdlau/archive/2011/11/30/379143.html</guid><wfw:comment>http://www.blogjava.net/wshsdlau/comments/379143.html</wfw:comment><comments>http://www.blogjava.net/wshsdlau/archive/2011/11/30/379143.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshsdlau/comments/commentRss/379143.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshsdlau/services/trackbacks/379143.html</trackback:ping><description><![CDATA[<div class="blog_content" id="blog_content">
<p>1、 开始－＞设置－＞控制面板－＞管理工具－＞服务 <br />停止所有Oracle服务。 </p>
<p>2、 开始－＞程序－＞Oracle - OraHome81－＞Oracle Installation Products－＞Universal Installer <br />卸装所有Oracle产品，但Universal Installer本身不能被删除 </p>
<p>5、 运行regedit，选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE，按del键删除这个入口。 </p>
<p>6、 运行regedit，选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services，滚动 <br />这个列表，删除所有Oracle入口。 </p>
<p>7、 运行refedit，HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application， <br />删除所有Oracle入口。 </p>
<p>8、 开始－＞设置－＞控制面板－＞系统－＞高级－＞环境变量 <br />删除环境变量CLASSPATH和PATH中有关Oracle的设定 </p>
<p>9、 从桌面上、STARTUP（启动）组、程序菜单中，删除所有有关Oracle的组和图标 </p>
<p>10、 删除\Program Files\Oracle目录 </p>
<p>11、 重新启动计算机，重起后才能完全删除Oracle所在目录 </p>
<p>12、 删除与Oracle有关的文件，选择Oracle所在的缺省目录C:\Oracle，删除这个入口目录及所有子目录，并从Windows 2000目录（一般为C:\WINNT）下删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini等等。 </p>
<p>13、 WIN.INI文件中若有[ORACLE]的标记段，删除该段 </p>
<p>14、 如有必要，删除所有Oracle相关的ODBC的DSN </p></div> <img src ="http://www.blogjava.net/wshsdlau/aggbug/379143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshsdlau/" target="_blank">哈希</a> 2011-11-30 15:30 <a href="http://www.blogjava.net/wshsdlau/archive/2011/11/30/379143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用sql</title><link>http://www.blogjava.net/wshsdlau/archive/2011/06/08/379153.html</link><dc:creator>哈希</dc:creator><author>哈希</author><pubDate>Wed, 08 Jun 2011 09:55:00 GMT</pubDate><guid>http://www.blogjava.net/wshsdlau/archive/2011/06/08/379153.html</guid><wfw:comment>http://www.blogjava.net/wshsdlau/comments/379153.html</wfw:comment><comments>http://www.blogjava.net/wshsdlau/archive/2011/06/08/379153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshsdlau/comments/commentRss/379153.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshsdlau/services/trackbacks/379153.html</trackback:ping><description><![CDATA[<div>Student(S#,Sname,Sage,Ssex) 学生表 <br />Course(C#,Cname,T#) 课程表 <br />SC(S#,C#,score) 成绩表 <br />Teacher(T#,Tname) 教师表 <br /><br />问题： <br />1、查询&#8220;001&#8221;课程比&#8220;002&#8221;课程成绩高的所有学生的学号； <br />&nbsp; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score <br />&nbsp; from SC where C#='002') b <br />&nbsp; where a.score&gt;b.score and a.s#=b.s#; <br />2、查询平均成绩大于60分的同学的学号和平均成绩； <br />&nbsp;&nbsp;&nbsp; select S#,avg(score) <br />&nbsp;&nbsp;&nbsp; from sc <br />&nbsp;&nbsp;&nbsp; group by S# having avg(score) &gt;60; <br />3、查询所有同学的学号、姓名、选课数、总成绩； <br />&nbsp; select Student.S#,Student.Sname,count(SC.C#),sum(score) <br />&nbsp; from Student left Outer join SC on Student.S#=SC.S# <br />&nbsp; group by Student.S#,Sname <br />4、查询姓&#8220;李&#8221;的老师的个数； <br />&nbsp; select count(distinct(Tname)) <br />&nbsp; from Teacher <br />&nbsp; where Tname like '李%'; <br />5、查询没学过&#8220;叶平&#8221;老师课的同学的学号、姓名； <br />&nbsp;&nbsp;&nbsp; select Student.S#,Student.Sname <br />&nbsp;&nbsp;&nbsp; from Student &nbsp;<br />&nbsp;&nbsp;&nbsp; where S# not in (select distinct( SC.S#) from SC,Course,Teacher where&nbsp; SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平'); <br />6、查询学过&#8220;001&#8221;并且也学过编号&#8220;002&#8221;课程的同学的学号、姓名； <br />&nbsp; select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002'); <br />7、查询学过&#8220;叶平&#8221;老师所教的所有课的同学的学号、姓名； <br />&nbsp; select S#,Sname <br />&nbsp; from Student <br />&nbsp; where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=<br />&nbsp;&nbsp;&nbsp;&nbsp; (select count(C#) from Course,Teacher&nbsp; where Teacher.T#=Course.T# and Tname='叶平')); <br />8、查询课程编号&#8220;002&#8221;的成绩比课程编号&#8220;001&#8221;课程低的所有同学的学号、姓名； <br />&nbsp; Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 <br />&nbsp; from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 &lt;score; <br />9、查询所有课程成绩小于60分的同学的学号、姓名； <br />&nbsp; select S#,Sname <br />&nbsp; from Student <br />&nbsp; where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score&gt;60); <br />10、查询没有学全所有课的同学的学号、姓名； <br />&nbsp;&nbsp;&nbsp; select Student.S#,Student.Sname <br />&nbsp;&nbsp;&nbsp; from Student,SC <br />&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# group by&nbsp; Student.S#,Student.Sname having count(C#) &lt;(select count(C#) from Course); <br />11、查询至少有一门课与学号为&#8220;1001&#8221;的同学所学相同的同学的学号和姓名； <br />&nbsp;&nbsp;&nbsp; select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001'; <br />12、查询至少学过学号为&#8220;001&#8221;同学所有一门课的其他同学学号和姓名； <br />&nbsp;&nbsp;&nbsp; select distinct SC.S#,Sname <br />&nbsp;&nbsp;&nbsp; from Student,SC <br />&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# and C# in (select C# from SC where S#='001'); <br />13、把&#8220;SC&#8221;表中&#8220;叶平&#8221;老师教的课的成绩都更改为此课程的平均成绩； <br />&nbsp;&nbsp;&nbsp; update SC set score=(select avg(SC_2.score) <br />&nbsp;&nbsp;&nbsp; from SC SC_2 <br />&nbsp;&nbsp;&nbsp; where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平'); <br />14、查询和&#8220;1002&#8221;号的同学学习的课程完全相同的其他同学学号和姓名； <br />&nbsp;&nbsp;&nbsp; select S# from SC where C# in (select C# from SC where S#='1002') <br />&nbsp;&nbsp;&nbsp; group by S# having count(*)=(select count(*) from SC where S#='1002'); <br />15、删除学习&#8220;叶平&#8221;老师课的SC表记录； <br />&nbsp;&nbsp;&nbsp; Delect SC <br />&nbsp;&nbsp;&nbsp; from course ,Teacher &nbsp;<br />&nbsp;&nbsp;&nbsp; where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平'; <br />16、向SC表中插入一些记录，这些记录要求符合以下条件：没有上过编号&#8220;003&#8221;课程的同学学号、2、 <br />&nbsp;&nbsp;&nbsp; 号课的平均成绩； <br />&nbsp;&nbsp;&nbsp; Insert SC select S#,'002',(Select avg(score) <br />&nbsp;&nbsp;&nbsp; from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002'); <br />17、按平均成绩从高到低显示所有学生的&#8220;数据库&#8221;、&#8220;企业管理&#8221;、&#8220;英语&#8221;三门的课程成绩，按如下形式显示： 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分 <br />&nbsp;&nbsp;&nbsp; SELECT S# as 学生ID <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩 <br />&nbsp;&nbsp;&nbsp; FROM SC AS t <br />&nbsp;&nbsp;&nbsp; GROUP BY S# <br />&nbsp;&nbsp;&nbsp; ORDER BY avg(t.score) &nbsp;<br />18、查询各科成绩最高和最低的分：以如下形式显示：课程ID，最高分，最低分 <br />&nbsp;&nbsp;&nbsp; SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分 <br />&nbsp;&nbsp;&nbsp; FROM SC L ,SC AS R <br />&nbsp;&nbsp;&nbsp; WHERE L.C# = R.C# and <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; L.score = (SELECT MAX(IL.score) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC AS IL,Student AS IM <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE L.C# = IL.C# and IM.S#=IL.S# <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY IL.C#) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; R.Score = (SELECT MIN(IR.score) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC AS IR <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE R.C# = IR.C# <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY IR.C# <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ); <br />19、按各科平均成绩从低到高和及格率的百分数从高到低顺序 <br />&nbsp;&nbsp;&nbsp; SELECT t.C# AS 课程号,max(course.Cname)AS 课程名,isnull(AVG(score),0) AS 平均成绩 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN&nbsp; isnull(score,0)&gt;=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数 <br />&nbsp;&nbsp;&nbsp; FROM SC T,Course <br />&nbsp;&nbsp;&nbsp; where t.C#=course.C# <br />&nbsp;&nbsp;&nbsp; GROUP BY t.C# <br />&nbsp;&nbsp;&nbsp; ORDER BY 100 * SUM(CASE WHEN&nbsp; isnull(score,0)&gt;=60 THEN 1 ELSE 0 END)/COUNT(*) DESC <br />20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理（001），马克思（002），OO&amp;UML （003），数据库（004） <br />&nbsp;&nbsp;&nbsp; SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN C# = '001' AND score &gt;= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN C# = '002' AND score &gt;= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN C# = '003' AND score &gt;= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,100 * SUM(CASE WHEN C# = '004' AND score &gt;= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数 <br />&nbsp; FROM SC <br /><br />21、查询不同老师所教不同课程平均分从高到低显示 <br />&nbsp; SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ＩＤ,MAX(C.Cname) AS 课程名称,AVG(Score) AS 平均成绩 <br />&nbsp;&nbsp;&nbsp; FROM SC AS T,Course AS C ,Teacher AS Z <br />&nbsp;&nbsp;&nbsp; where T.C#=C.C# and C.T#=Z.T# <br />&nbsp; GROUP BY C.C# <br />&nbsp; ORDER BY AVG(Score) DESC <br />22、查询如下课程成绩第 3 名到第 6 名的学生成绩单：企业管理（001），马克思（002），UML （003），数据库（004） <br />&nbsp;&nbsp;&nbsp; [学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩 <br />&nbsp;&nbsp;&nbsp; SELECT&nbsp; DISTINCT top 3 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SC.S# As 学生学号, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student.Sname AS 学生姓名 , <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T1.score AS 企业管理, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T2.score AS 马克思, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T3.score AS UML, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T4.score AS 数据库, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM Student,SC&nbsp; LEFT JOIN SC AS T1 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON SC.S# = T1.S# AND T1.C# = '001' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN SC AS T2 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON SC.S# = T2.S# AND T2.C# = '002' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN SC AS T3 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON SC.S# = T3.S# AND T3.C# = '003' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN SC AS T4 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON SC.S# = T4.S# AND T4.C# = '004' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE student.S#=SC.S# and <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NOT IN <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SELECT <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DISTINCT <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOP 15 WITH TIES <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM sc <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T1 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON sc.S# = T1.S# AND T1.C# = 'k1' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T2 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON sc.S# = T2.S# AND T2.C# = 'k2' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T3 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON sc.S# = T3.S# AND T3.C# = 'k3' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LEFT JOIN sc AS T4 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ON sc.S# = T4.S# AND T4.C# = 'k4' <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC); <br /><br />23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ &lt;60] <br />&nbsp;&nbsp;&nbsp; SELECT SC.C# as 课程ID, Cname as 课程名称 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85] <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70] <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60] <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(CASE WHEN score &lt; 60 THEN 1 ELSE 0 END) AS [60 -] <br />&nbsp;&nbsp;&nbsp; FROM SC,Course <br />&nbsp;&nbsp;&nbsp; where SC.C#=Course.C# <br />&nbsp;&nbsp;&nbsp; GROUP BY SC.C#,Cname; <br /><br />24、查询学生平均成绩及其名次 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT 1+(SELECT COUNT( distinct 平均成绩) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM (SELECT S#,AVG(score) AS 平均成绩 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY S# <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) AS T1 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE 平均成绩 &gt; T2.平均成绩) as 名次, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S# as 学生学号,平均成绩 <br />&nbsp;&nbsp;&nbsp; FROM (SELECT S#,AVG(score) 平均成绩 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY S# <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) AS T2 <br />&nbsp;&nbsp;&nbsp; ORDER BY 平均成绩 desc; <br />&nbsp; <br />25、查询各科成绩前三名的记录:(不考虑成绩并列情况) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC t1 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE score IN (SELECT TOP 3 score <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE t1.C#= C# <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY score DESC <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY t1.C#; <br />26、查询每门课程被选修的学生数 <br />&nbsp; select c#,count(S#) from sc group by C#; <br />27、查询出只选修了一门课程的全部学生的学号和姓名 <br />&nbsp; select SC.S#,Student.Sname,count(C#) AS 选课数 <br />&nbsp; from SC ,Student <br />&nbsp; where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1; <br />28、查询男生、女生人数 <br />&nbsp;&nbsp;&nbsp; Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男'; <br />&nbsp;&nbsp;&nbsp; Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女'； <br />29、查询姓&#8220;张&#8221;的学生名单 <br />&nbsp;&nbsp;&nbsp; SELECT Sname FROM Student WHERE Sname like '张%'; <br />30、查询同名同性学生名单，并统计同名人数 <br />&nbsp; select Sname,count(*) from Student group by Sname having&nbsp; count(*)&gt;1;; <br />31、1981年出生的学生名单(注：Student表中Sage列的类型是datetime) <br />&nbsp;&nbsp;&nbsp; select Sname,&nbsp; CONVERT(char (11),DATEPART(year,Sage)) as age <br />&nbsp;&nbsp;&nbsp; from student <br />&nbsp;&nbsp;&nbsp; where&nbsp; CONVERT(char(11),DATEPART(year,Sage))='1981'; <br />32、查询每门课程的平均成绩，结果按平均成绩升序排列，平均成绩相同时，按课程号降序排列 <br />&nbsp;&nbsp;&nbsp; Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ; <br />33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩 <br />&nbsp;&nbsp;&nbsp; select Sname,SC.S# ,avg(score) <br />&nbsp;&nbsp;&nbsp; from Student,SC <br />&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# group by SC.S#,Sname having&nbsp;&nbsp;&nbsp; avg(score)&gt;85; <br />34、查询课程名称为&#8220;数据库&#8221;，且分数低于60的学生姓名和分数 <br />&nbsp;&nbsp;&nbsp; Select Sname,isnull(score,0) <br />&nbsp;&nbsp;&nbsp; from Student,SC,Course <br />&nbsp;&nbsp;&nbsp; where SC.S#=Student.S# and SC.C#=Course.C# and&nbsp; Course.Cname='数据库'and score &lt;60; <br />35、查询所有学生的选课情况； <br />&nbsp;&nbsp;&nbsp; SELECT SC.S#,SC.C#,Sname,Cname <br />&nbsp;&nbsp;&nbsp; FROM SC,Student,Course <br />&nbsp;&nbsp;&nbsp; where SC.S#=Student.S# and SC.C#=Course.C# ; <br />36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数； <br />&nbsp;&nbsp;&nbsp; SELECT&nbsp; distinct student.S#,student.Sname,SC.C#,SC.score <br />&nbsp;&nbsp;&nbsp; FROM student,Sc <br />&nbsp;&nbsp;&nbsp; WHERE SC.score&gt;=70 AND SC.S#=student.S#; <br />37、查询不及格的课程，并按课程号从大到小排列 <br />&nbsp;&nbsp;&nbsp; select c# from sc where scor e &lt;60 order by C# ; <br />38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名； <br />&nbsp;&nbsp;&nbsp; select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score&gt;80 and C#='003'; <br />39、求选了课程的学生人数 <br />&nbsp;&nbsp;&nbsp; select count(*) from sc; <br />40、查询选修&#8220;叶平&#8221;老师所授课程的学生中，成绩最高的学生姓名及其成绩 <br />&nbsp;&nbsp;&nbsp; select Student.Sname,score <br />&nbsp;&nbsp;&nbsp; from Student,SC,Course C,Teacher <br />&nbsp;&nbsp;&nbsp; where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# ); <br />41、查询各个课程及相应的选修人数 <br />&nbsp;&nbsp;&nbsp; select count(*) from sc group by C#; <br />42、查询不同课程成绩相同的学生的学号、课程号、学生成绩 <br />&nbsp; select distinct&nbsp; A.S#,B.score from SC A&nbsp; ,SC B where A.Score=B.Score and A.C# &lt;&gt;B.C# ; <br />43、查询每门功成绩最好的前两名 <br />&nbsp;&nbsp;&nbsp; SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC t1 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE score IN (SELECT TOP 2 score <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM SC <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE t1.C#= C# <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY score DESC <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY t1.C#; <br />44、统计每门课程的学生选修人数（超过10人的课程才统计）。要求输出课程号和选修人数，查询结果按人数降序排列，查询结果按人数降序排列，若人数相同，按课程号升序排列 &nbsp;<br />&nbsp;&nbsp;&nbsp; select&nbsp; C# as 课程号,count(*) as 人数 <br />&nbsp;&nbsp;&nbsp; from&nbsp; sc &nbsp;<br />&nbsp;&nbsp;&nbsp; group&nbsp; by&nbsp; C# <br />&nbsp;&nbsp;&nbsp; order&nbsp; by&nbsp; count(*) desc,c# &nbsp;<br />45、检索至少选修两门课程的学生学号 <br />&nbsp;&nbsp;&nbsp; select&nbsp; S# &nbsp;<br />&nbsp;&nbsp;&nbsp; from&nbsp; sc &nbsp;<br />&nbsp;&nbsp;&nbsp; group&nbsp; by&nbsp; s# <br />&nbsp;&nbsp;&nbsp; having&nbsp; count(*)&nbsp; &gt;&nbsp; =&nbsp; 2 <br />46、查询全部学生都选修的课程的课程号和课程名 <br />&nbsp;&nbsp;&nbsp; select&nbsp; C#,Cname &nbsp;<br />&nbsp;&nbsp;&nbsp; from&nbsp; Course &nbsp;<br />&nbsp;&nbsp;&nbsp; where&nbsp; C#&nbsp; in&nbsp; (select&nbsp; c#&nbsp; from&nbsp; sc group&nbsp; by&nbsp; c#) &nbsp;<br />47、查询没学过&#8220;叶平&#8221;老师讲授的任一门课程的学生姓名 <br />&nbsp;&nbsp;&nbsp; select Sname from Student where S# not in (select S# from Course,Teacher,SC where Course.T#=Teacher.T# and SC.C#=course.C# and Tname='叶平'); <br />48、查询两门以上不及格课程的同学的学号及其平均成绩 <br />&nbsp;&nbsp;&nbsp; select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score &lt;60 group by S# having count(*)&gt;2)group by S#; <br />49、检索&#8220;004&#8221;课程分数小于60，按分数降序排列的同学学号 <br />&nbsp;&nbsp;&nbsp; select S# from SC where C#='004'and score &lt;60 order by score desc; <br />50、删除&#8220;002&#8221;同学的&#8220;001&#8221;课程的成绩 <br />delete from Sc where S#='001'and C#='001'</div> <img src ="http://www.blogjava.net/wshsdlau/aggbug/379153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshsdlau/" target="_blank">哈希</a> 2011-06-08 17:55 <a href="http://www.blogjava.net/wshsdlau/archive/2011/06/08/379153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle的常用查询操作</title><link>http://www.blogjava.net/wshsdlau/archive/2011/05/28/379154.html</link><dc:creator>哈希</dc:creator><author>哈希</author><pubDate>Sat, 28 May 2011 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/wshsdlau/archive/2011/05/28/379154.html</guid><wfw:comment>http://www.blogjava.net/wshsdlau/comments/379154.html</wfw:comment><comments>http://www.blogjava.net/wshsdlau/archive/2011/05/28/379154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshsdlau/comments/commentRss/379154.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshsdlau/services/trackbacks/379154.html</trackback:ping><description><![CDATA[<div>1．列出至少有一个员工的所有部门。(两个表联合查询，及group by...having的用法) <br />select dname from dept  where deptno in(select deptno from emp group by deptno having count(*)&gt;1);  <br /><br />2．列出薪金比&#8220;SMITH&#8221;多的所有员工。(经典的自连接查询) <br />select ename from emp where  sal&gt;(select sal from emp where ename like'SMITH');  <br /><br />3．列出所有员工的姓名及其直接上级的姓名。(多次对自己查询,为表的取个别名，内部查询可以像对象一样引用外部的对象的字段，这里引用与编程中的作用域相似，即与{}类比)  <br /><br />select ename,(select ename from emp where empno in(a.mgr)) from emp a ;  <br /><br />4．列出受雇日期早于其直接上级的所有员工。(同上,日期可直接拿来比较) <br /><br />select ename from emp a  where HIREDATE&lt;(select HIREDATE from emp where empno in(a.mgr));  <br /><br />5．列出部门名称和这些部门的员工信息，同时列出那些没有员工的部门(以emp表为主，左连接查询) <br /><br />select  dname,emp.* from dept left join emp on dept.deptno=emp.deptno;  <br /><br />6．列出所有&#8220;CLERK&#8221;（办事员）的姓名及其部门名称。(域，注意()) <br /><br />select ename,(select dname  from dept where deptno in(a.deptno)) as dname from emp a where JOB like'CLERK';  <br /><br />7．列出最低薪金大于1500的各种工作。 <br />select job from emp where sal&gt;1500;  <br /><br />8．列出在部门&#8220;SALES&#8221;（销售部）工作的员工的姓名，假定不知道销售部的部门编号。(经典的两个表连接) <br /><br />select  ename from emp where deptno=(select deptno from dept where dname like'SALES');  <br /><br />9．列出薪金高于公司平均薪金的所有员工。(反复查自己) <br /><br />select ename from emp where sal&gt;(  select avg( sal) from emp); <br /><br />10．列出与&#8220;SCOTT&#8221;从事相同工作的所有员工。(排除自己)  <br /><br />select ename from emp where job in(select job from emp where ename  like'SCOTT') and ename!='SCOTT' ;  <br /><br />11．列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。(any的用法，且排挤) <br /><br />select ename,sal  from emp where sal=any(select sal from emp wheredeptno=30) and deptno!=30;  <br /><br />12．列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。(max的用法) <br /><br />select sal,ename from  emp where sal&gt;(select max(sal) from emp where deptno=30);  <br /><br /><br />13．列出在每个(每个是关键字,对此group by)部门工作的员工数量、平均工资和平均服务期限。(经典的group by用法)  <br /><br />select deptno,count(*),avg(a.sal),avg(sysdate-HIREDATE) from emp a group  by deptno; <br /><br />14．列出所有员工的姓名、部门名称和工资.(经典的两个表的连接查询，用具体的名称替换一个表中的主键的id  (解决很多人在实际运用中会遇到的不能绑定多列的问题)，也可用where来查询 ,与题5比较) <br /><br />select ename,sal,(select  dname from dept a where a.deptno=b.deptno)as dname from emp b;  <br /><br />15．列出所有部门的详细信息和部门人数。(因为是*，将显示dept和后面临时表b的全部字段(注意:不只是dept的字段,注意*号))  <br /><br />select * from dept a left join (select deptno,count(*) from emp group by  deptno) b on a.deptno=b.deptno ; <br /><br />16．列出各种(与每个同义(参看题13))工作的最低工资。  <br /><br />select job,min(sal) from emp group by job ;  <br /><br /><br />17．列出各个部门的MANAGER（经理,经理唯一，不用group by）的最低薪金。 <br /><br />select min(sal)  from emp where job like'MANAGER';(因为MANAGER是值不是字段，所以不能用小写)  <br /><br />18．列出所有员工的年工资,按年薪从低到高排序。(nvl:空转化函数) <br /><br />select ename,sal+nvl(comm,0)  as sal from emp order by sal ;</div> <img src ="http://www.blogjava.net/wshsdlau/aggbug/379154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshsdlau/" target="_blank">哈希</a> 2011-05-28 16:33 <a href="http://www.blogjava.net/wshsdlau/archive/2011/05/28/379154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle  over() sum()</title><link>http://www.blogjava.net/wshsdlau/archive/2011/05/13/379158.html</link><dc:creator>哈希</dc:creator><author>哈希</author><pubDate>Fri, 13 May 2011 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/wshsdlau/archive/2011/05/13/379158.html</guid><wfw:comment>http://www.blogjava.net/wshsdlau/comments/379158.html</wfw:comment><comments>http://www.blogjava.net/wshsdlau/archive/2011/05/13/379158.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshsdlau/comments/commentRss/379158.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshsdlau/services/trackbacks/379158.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">所用数据：<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />SELECT&nbsp;a.deptno,&nbsp;a.employename,&nbsp;a.salary<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;FROM&nbsp;t_salary&nbsp;a<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000001</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;李可&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">1000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000001</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;李强&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">2000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000001</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;杨彦军&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000002</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;童家道&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000002</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;姜文&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000002</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;罗文&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000003</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;窨嫡&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000003</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;童家道&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000003</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;童家道&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000004</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;于名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">SELECT&nbsp;A.deptno,&nbsp;A.employename,A.salary,<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">--</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;按照名称进行分区，同时按照名称进行合计&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />SUM(A.salary)OVER(PARTITION&nbsp;BY&nbsp;A.employename)&nbsp;AS&nbsp;SUM_INC_ONLY,<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">--</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;按照名称进行累计&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />SUM(A.salary)OVER(ORDER&nbsp;BY&nbsp;A.employename)&nbsp;AS&nbsp;SUM_INC,<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">--</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;和&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;效果相同&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />SUM(A.salary)OVER(PARTITION&nbsp;BY&nbsp;A.employename&nbsp;ORDER&nbsp;BY&nbsp;A.employename)&nbsp;AS&nbsp;SUM_INC_NAME,<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">--</span><span style="color: #000000">4</span><span style="color: #000000">&nbsp;按照部门分组，部门内进行合计。名称相同时进行累计&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />SUM(A.salary)OVER(PARTITION&nbsp;BY&nbsp;A.deptno&nbsp;ORDER&nbsp;BY&nbsp;A.employename)&nbsp;AS&nbsp;SUM_INC_DEP,<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">--</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;按照部门,名称分组，部门名称相同时进行合计&nbsp;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />SUM(A.salary)OVER(PARTITION&nbsp;BY&nbsp;A.deptno,A.employename&nbsp;)&nbsp;AS&nbsp;SUM_INC_DEP_NAM<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />FROM&nbsp;t_salary&nbsp;A<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />所得结果：<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />DEPTNO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EMPLOYENAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SALARY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM_INC_ONLY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM_INC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM_INC_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM_INC_DEP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SUM_INC_DEP_NAM<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000002</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;姜文&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000001</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;李可&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">1000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">1000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">1000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">1000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">1000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000001</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;李强&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">2000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">2000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">6000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">2000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">2000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000002</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;罗文&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">9000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">6000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000002</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;童家道&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">9000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">18000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">9000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">9000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000003</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;童家道&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">9000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">18000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">9000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">6000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">6000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000003</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;童家道&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">9000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">18000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">9000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">6000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">6000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000001</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;杨彦军&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">22000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">7000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000004</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;于名&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">26000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">4000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">000003</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;窨嫡&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">29000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">9000</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></div>
 <img src ="http://www.blogjava.net/wshsdlau/aggbug/379158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshsdlau/" target="_blank">哈希</a> 2011-05-13 17:01 <a href="http://www.blogjava.net/wshsdlau/archive/2011/05/13/379158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle中rownum与rowid</title><link>http://www.blogjava.net/wshsdlau/archive/2011/05/10/379161.html</link><dc:creator>哈希</dc:creator><author>哈希</author><pubDate>Tue, 10 May 2011 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/wshsdlau/archive/2011/05/10/379161.html</guid><wfw:comment>http://www.blogjava.net/wshsdlau/comments/379161.html</wfw:comment><comments>http://www.blogjava.net/wshsdlau/archive/2011/05/10/379161.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wshsdlau/comments/commentRss/379161.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wshsdlau/services/trackbacks/379161.html</trackback:ping><description><![CDATA[<p>首先来说一下rownum与rowid含义：</p>
<p>顾名思义rownum就是行数/行号，而rowid就是编码/编号/唯一识别号，所以他是类似&#8220;AAAR8gAAEAAAAErAAK&#8221;的编号，<span style="text-decoration: underline;">注意他是没有先后顺序的，也就是说他和数据入库时间没有任何关系，打个比方：他就像磁盘、内存存储数据用的是16进制的地址一样。</span></p>
<p>他们都是伪列，可以理解成表中的一个列只是他们并不是你创建的。同样是伪列区别是什么呢？</p>
<p>rowid是你录入数据时有数据库自动为这条记录添加的唯一的18位编号是一个物理编号用于找到这条记录（顺便说一句这也是为什么数据优调的时候强
调尽量使用rowid的原因），他是不会随着查询而改变的 除非在表发生移动(比如表空间变化，数据导入/导出以后)，才会发生变化。</p>
<p>rownum是根据sql查询后得到的结果自动加上去的，但是他却不受到sql中order
by排序的影响，因为他和rowid的顺序一样是系统按照记录插入时的顺序给记录排的号（顺序的、无跳跃）。&nbsp;但是如果你想让rownum和order
by一样的顺序 那么可以使用子查询，形如：select rownum,t.* from (select * from 表空间名 order by
字段名) t&nbsp;
这样的话rownum就是根据该字段进行排序的编号了，为什么会这样呢，本人理解：rownum是根据表记录输出的行号，与筛选语句、排序语句都无关所以
当用子查询时等于生成了一个表于是就按照这张表从1开始排序了。 同样，也可以用下面要提得到的分析函数中的row_number()
over(order by 需要排序的字段名)。</p>
<p>&nbsp;&nbsp;</p>
<p><em>值得一提的是MSSQL是没有rownum和rowid的。</em></p>
<p><em></em></p>
<p><em></em></p>
<p><em></em></p>
<p>下面说说分析函数row_number()、rank()、dense_rank()</p>
<p>ROW_NUMBER()： <br />
Row_number函数返回一个唯一的值，当碰到相同数据时，排名按照记录集中记录的顺序依次递增。 row_number()和rownum差不多，功能更强一点（可以在各个分组内从1开时排序），<span style="text-decoration: underline;">因为row_number()是分析函数而rownum是伪列所以row_number()一定要over而rownum不能over。</span></p>
<p>RANK()：<br />
Rank函数返回一个唯一的值，除非遇到相同的数据，此时所有相同数据的排名是一样的，同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。<span style="text-decoration: underline;">rank()是跳跃排序</span>，有两个第二名时接下来就是第四名（同样是在各个分组内）。</p>
<p>DENSE_RANK()：<br />
Dense_rank函数返回一个唯一的值，除非当碰到相同数据，此时所有相同数据的排名都是一样的。<br />
<span style="text-decoration: underline;">dense_rank()是连续排序</span>，有两个第二名时仍然跟着第三名。他和row_number的区别在于row_number是没有重复值的。</p>
<p style="text-indent: 2em">一，什么是伪列RowID？</p>
<p style="text-indent: 2em">1,首先是一种数据类型，唯一标识一条记录物理位置的一个id，基于64位编码的18个字符显示。</p>
<p style="text-indent: 2em">2,未存储在表中，可以从表中查询，但不支持插入，更新，删除它们的值。</p>
<p style="text-indent: 2em">二，RowID的用途</p>
<p style="text-indent: 2em">1,在开发中使用频率应该是挺多的，特别在一些update语句中使用更加频繁。所以oracle ERP中大部份的视图都会加入rowid这个字段。</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 在一些cursor定义时也少不了加入rowid。但往往我们在开发过程中，由于连接的表很多，再加上程序的复制，有时忽略了rowid对应的是那一个表中rowid，所以有时过程出错，</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 往往发上很多时间去查错，最后查出来既然是update时带的rowid并非此表的rowid,所以在发现很多次的错误时，重视rowid起来了，开发中一定要注意rowid的匹配</p>
<p style="text-indent: 2em">2，能以做快的方式访问表中的一行。</p>
<p style="text-indent: 2em">3，能显示表的行是如何存储的。</p>
<p style="text-indent: 2em">4，作为表中唯一标识。</p>
<p style="text-indent: 2em">三，RowID的组成</p>
<p style="text-indent: 2em">rowid确定了每条记录是在Oracle中的哪一个数据对象，数据文件、块、行上。 </p>
<p style="text-indent: 2em">ROWID 的格式如下： </p>
<p style="text-indent: 2em">&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; 行编号 </p>
<p style="text-indent: 2em">&nbsp;&nbsp; OOOOOO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FFF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BBBBBB&nbsp;&nbsp;&nbsp; RRR </p>
<p style="text-indent: 2em">&nbsp;&nbsp; 由 da<wbr>ta_object_id# + rfile# + block# + row#&nbsp;&nbsp; 组成，占用10个bytes的空间， </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 32bit的 da<wbr>ta_object_id#, </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 10 bit 的 rfile#, </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 22bit 的 block#, </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 16 bit 的 row#. </p>
<p style="text-indent: 2em">&nbsp;&nbsp; 所以每个表空间不能超过1023个 数据文件。</p>
<p style="text-indent: 2em">四，RowID的应用</p>
<p style="text-indent: 2em">1，查找和删除重复记录</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 当试图对库表中的某一列或几列创建唯一索引时，</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 系统提示 ORA-01452 ：不能创建唯一索引，发现重复记录。 </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; /*conn scott/tiger</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; Create table empa as select * from emp;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 插入重复记录</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; insert into empa select * from emp where empno = 7369;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; insert into empa select * from emp where empno = 7839;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; insert into empa select * from emp where empno = 7934;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; */</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 查找重复记录的几种方法：</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 查找大量重复记录</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; select empno from empa group by empno having count(*) &gt;1;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; Select * From empa Where ROWID Not In(Select Min(ROWID) From empa Group By empno);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 查找少量重复记录</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; select * from empa a where rowid&lt;&gt;(select max(rowid) from empa where empno=a.empno );</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 删除重复记录的几种方法：</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; (1).适用于有大量重复记录的情况(列上建有索引的时候，用以下语句效率会很高)： </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; Delete empa Where empno In (Select empno From empa Group By empno Having Count(*) &gt; 1) </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; And ROWID Not In (Select Min(ROWID) From empa Group By empno Having Count(*) &gt; 1);</p>
<p style="text-indent: 2em">&nbsp;&nbsp; </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; Delete empa Where ROWID Not In(Select Min(ROWID) From empa Group By empno);</p>
<p style="text-indent: 2em">&nbsp;&nbsp; </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; (2).适用于有少量重复记录的情况(注意，对于有大量重复记录的情况，用以下语句效率会很低)：</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; Delete empa a where rowid&lt;&gt;(select max(rowid) from empa where empno=a.empno );</p>
<p style="text-indent: 2em">---------------------------------------------------------------------------------------------------------------------------------------------------</p>
<p style="text-indent: 2em">注意：rownum从1开始；</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rownum按照记录插入时的顺序给记录排序，所以有order by的子句时一定要注意啊！</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用时rownum，order by字段是否为主键有什么影响？</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 子查询中rownum rn，而rn用到外查询中到底是怎样的序列？</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若id主键是按照从小到大的顺序插入的，select语句没有group by 和order by的子句时，rownum的顺序和id顺序基本一致。</p>
<p style="text-indent: 2em">对于 Oracle 的 rownum
问题，很多资料都说不支持&gt;,&gt;=,=,between...and，只能用以上符号(&lt;、&lt;=、!=)，并非说用&gt;,&amp;
gt;=,=,between..and
时会提示SQL语法错误，而是经常是查不出一条记录来，还会出现似乎是莫名其妙的结果来，其实您只要理解好了这个 rownum
伪列的意义就不应该感到惊奇，同样是伪列，rownum 与 rowid 可有些不一样，下面以例子说明</p>
<p style="text-indent: 2em">假设某个表 t1(c1) 有 20 条记录</p>
<p style="text-indent: 2em">如果用 select rownum,c1 from t1 where rownum &lt; 10, 只要是用小于号，查出来的结果很容易地与一般理解在概念上能达成一致，应该不会有任何疑问的。</p>
<p style="text-indent: 2em">可如果用 select rownum,c1 from t1 where rownum
&gt; 10
(如果写下这样的查询语句，这时候在您的头脑中应该是想得到表中后面10条记录)，你就会发现，显示出来的结果要让您失望了，也许您还会怀疑是不谁删了一
些记录，然后查看记录数，仍然是 20 条啊？那问题是出在哪呢？</p>
<p style="text-indent: 2em">先好好理解 rownum
的意义吧。因为ROWNUM是对结果集加的一个伪列，即先查到结果集之后再加上去的一个列 (强调：先要有结果集)。简单的说 rownum
是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1，而有其他大于1的值。所以您没办法期望得到下面的结果集：</p>
<p style="text-indent: 2em">11 aaaaaaaa</p>
<p style="text-indent: 2em">12 bbbbbbb</p>
<p style="text-indent: 2em">13 ccccccc</p>
<p style="text-indent: 2em">.................</p>
<p style="text-indent: 2em">rownum &gt;10 没有记录，因为第一条不满足去掉的话，第二条的ROWNUM又成了1，所以永远没有满足条件的记录。或者可以这样理解：</p>
<p style="text-indent: 2em">ROWNUM是一个序列，是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第
一条记录则rownum值为1，第二条为2，依次类推。如果你用&gt;,&gt;=,=,between...and这些条件，因为从缓冲区或数据文件
中得到的第一条记录的rownum为1，则被删除，接着取下条，可是它的rownum还是1，又被删除，依次类推，便没有了数据。</p>
<p style="text-indent: 2em">有了以上从不同方面建立起来的对 rownum 的概念，那我们可以来认识使用 rownum 的几种现像</p>
<p style="text-indent: 2em">1. select rownum,c1 from t1 where rownum != 10 为何是返回前9条数据呢？它与 select rownum,c1 from tablename where rownum &lt; 10 返回的结果集是一样的呢？</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为是在查询到结果集后，显示完第 9 条记录后，之后的记录也都是 !=
10,或者 &gt;=10,所以只显示前面9条记录。也可以这样理解，rownum 为9后的记录的 rownum为10，因条件为
!=10，所以去掉，其后记录补上，rownum又是10，也去掉，如果下去也就只会显示前面9条记录了。</p>
<p style="text-indent: 2em">2. 为什么 rownum &gt;1 时查不到一条记录，而 rownum &gt;0 或 rownum &gt;=1 却总显示所有的记录？</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为 rownum 是在查询到的结果集后加上去的，它总是从1开始。</p>
<p style="text-indent: 2em">3. 为什么 between 1 and 10 或者 between 0 and 10 能查到结果，而用 between 2 and 10 却得不到结果？</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原因同上一样，因为 rownum 总是从 1 开始。从上可以看出，任何时候想把 rownum = 1 这条记录抛弃是不对的，它在结果集中是不可或缺的，少了rownum=1 就像空中楼阁一般不能存在，所以你的 rownum 条件要包含到 1 。</p>
<p style="text-indent: 2em">但如果就是想要用 rownum &gt; 10 这种条件的话话就要用嵌套语句,把 rownum 先生成，然后对他进行查询。</p>
<p style="text-indent: 2em">select * </p>
<p style="text-indent: 2em">from (selet rownum as rn，t1.* from a where ...)</p>
<p style="text-indent: 2em">where rn &gt;10</p>
<p style="text-indent: 2em">一般代码中对结果集进行分页就是这么干的。</p>
<p style="text-indent: 2em">另外：rowid 与 rownum
虽都被称为伪列，但它们的存在方式是不一样的，rowid
可以说是物理存在的，表示记录在表空间中的唯一位置ID，在DB中唯一。只要记录没被搬动过，rowid是不变的。rowid
相对于表来说又像表中的一般列，所以以 rowid 为条件就不会有 rownum那些情况发生。</p>
<p style="text-indent: 2em">另外还要注意：rownum不能以任何基表的名称作为前缀。</p>
<p style="text-indent: 2em">对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号，返回的第一行分配的是1，第二行是2，依此类推，这个伪字段可以用于限制查询返回的总行数，且rownum不能以任何表的名称作为前缀。</p>
<p style="text-indent: 2em">(1) rownum 对于等于某值的查询条件</p>
<p style="text-indent: 2em">如果希望找到学生表中第一条学生的信息，可以使用rownum=1作为条件。但是想找到学生表
中第二条学生的信息，使用rownum=2结果查不到数据。因为rownum都是从1开始，但是1以上的自然数在rownum做等于判断是时认为都是
false条件，所以无法查到rownum = n（n&gt;1的自然数）。</p>
<p style="text-indent: 2em">SQL&gt; select rownum,id,name from student where rownum=1;（可以用在限制返回记录条数的地方，保证不出错，如：隐式游标）</p>
<p style="text-indent: 2em">SQL&gt; select rownum,id,name from student where rownum =2; </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME</p>
<p style="text-indent: 2em">（2）rownum对于大于某值的查询条件</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 如果想找到从第二行记录以后的记录，当使用rownum&gt;2是查不出记录的，原因是由于rownum是一个总是从1开始的伪列，Oracle 认为rownum&gt; n(n&gt;1的自然数)这种条件依旧不成立，所以查不到记录。</p>
<p style="text-indent: 2em">查找到第二行以后的记录可使用以下的子查询方法来解决。注意子查询中的rownum必须要有别名，否则还是不会查出记录来，这是因为rownum不是某个表的列，如果不起别名的话，无法知道rownum是子查询的列还是主查询的列。</p>
<p style="text-indent: 2em">SQL&gt;select * from(select rownum no ,id,name from student) where no&gt;2;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO ID&nbsp;&nbsp;&nbsp;&nbsp; NAME</p>
<p style="text-indent: 2em">---------- ------ ---------------------------------------------------</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 200003 李三</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 200004 赵四</p>
<p style="text-indent: 2em">（3）rownum对于小于某值的查询条件</p>
<p style="text-indent: 2em">rownum对于rownum&lt;n（(n&gt;1的自然数）的条件认为是成立的，所以可以找到记录。</p>
<p style="text-indent: 2em">SQL&gt; select rownum,id,name from student where rownum &lt;3;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME</p>
<p style="text-indent: 2em">---------- ------ ---------------------------------------------------</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 200001 张一</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 200002 王二</p>
<p style="text-indent: 2em">查询rownum在某区间的数据，必须使用子查询。例如要查询rownum在第二行到第三行之
间的数据，包括第二行和第三行数据，那么我们只能写以下语句，先让它返回小于等于三的记录行，然后在主查询中判断新的rownum的别名列大于等于二的记
录行。但是这样的操作会在大数据集中影响速度。</p>
<p style="text-indent: 2em">SQL&gt; select * from (select rownum no,id,name from student where rownum&lt;=3 ) where no &gt;=2;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO ID&nbsp;&nbsp;&nbsp;&nbsp; NAME</p>
<p style="text-indent: 2em">---------- ------ ---------------------------------------------------</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 200002 王二</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 200003 李三</p>
<p style="text-indent: 2em">（4）rownum和排序&nbsp;&nbsp; </p>
<p style="text-indent: 2em">Oracle中的rownum的是在取数据的时候产生的序号，所以想对指定排序的数据去指定的rowmun行数据就必须注意了。</p>
<p style="text-indent: 2em">SQL&gt; select rownum ,id,name from student order by name;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME</p>
<p style="text-indent: 2em">---------- ------ ---------------------------------------------------</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 200003 李三</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 200002 王二</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 200001 张一</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 200004 赵四</p>
<p style="text-indent: 2em">可以看出，rownum并不是按照name列来生成的序号。系统是按照记录插入时的顺序给记录排的号，rowid也是顺序分配的。为了解决这个问题，必须使用子查询；</p>
<p style="text-indent: 2em">SQL&gt; select rownum ,id,name from (select * from student order by name);</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; ROWNUM ID&nbsp;&nbsp;&nbsp;&nbsp; NAME</p>
<p style="text-indent: 2em">---------- ------ ---------------------------------------------------</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 200003 李三</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 200002 王二</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 200001 张一</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 200004 赵四</p>
<p style="text-indent: 2em">这样就成了按name排序，并且用rownum标出正确序号（有小到大）</p>
<p style="text-indent: 2em">笔者在工作中有一上百万条记录的表，在jsp页面中需对该表进行分页显示，便考虑用rownum来作，下面是具体方法(每页显示20条)： </p>
<p style="text-indent: 2em">&#8220;select * from tabname where rownum&lt;20
order by name" 但却发现oracle却不能按自己的意愿来执行，而是先随便取20条记录，然后再order
by，后经咨询oracle,说rownum确实就这样，想用的话，只能用子查询来实现先排序，后rownum，方法如下： </p>
<p style="text-indent: 2em">"select * from (select * from tabname order by name) where rownum&lt;20",但这样一来，效率会低很多。 </p>
<p style="text-indent: 2em">后经笔者试验，只需在order by 的字段上加主键或索引即可让oracle先按该字段排序，然后再rownum；方法不变：&nbsp;&nbsp;&nbsp; &#8220;select * from tabname where rownum&lt;20 order by name"</p>
<p style="text-indent: 2em">取得某列中第N大的行</p>
<p style="text-indent: 2em">select column_name from </p>
<p style="text-indent: 2em">(select table_name.*,dense_rank() over (order by column desc) rank from table_name) </p>
<p style="text-indent: 2em">where rank = &amp;N；</p>
<p style="text-indent: 2em">假如要返回前5条记录：</p>
<p style="text-indent: 2em">select * from tablename where rownum&lt;6;(或是rownum &lt;= 5 或是rownum != 6)</p>
<p style="text-indent: 2em">假如要返回第5-9条记录：</p>
<p style="text-indent: 2em">select * from tablename </p>
<p style="text-indent: 2em">where &#8230; </p>
<p style="text-indent: 2em">and rownum&lt;10 </p>
<p style="text-indent: 2em">minus </p>
<p style="text-indent: 2em">select * from tablename </p>
<p style="text-indent: 2em">where &#8230; </p>
<p style="text-indent: 2em">and rownum&lt;5 </p>
<p style="text-indent: 2em">order by name </p>
<p style="text-indent: 2em">选出结果后用name排序显示结果。(先选再排序)</p>
<p style="text-indent: 2em">注意：只能用以上符号(&lt;、&lt;=、!=)。</p>
<p style="text-indent: 2em">select * from tablename where rownum != 10;返回的是前９条记录。 </p>
<p style="text-indent: 2em">不能用：&gt;,&gt;=,=,Between...and。由于rownum是一个总是从1开始的伪列，Oracle 认为这种条件不成立。</p>
<p style="text-indent: 2em">另外，这个方法更快：</p>
<p style="text-indent: 2em">select * from ( </p>
<p style="text-indent: 2em">select rownum r,a from yourtable </p>
<p style="text-indent: 2em">where rownum &lt;= 20 </p>
<p style="text-indent: 2em">order by name ) </p>
<p style="text-indent: 2em">where r &gt; 10 </p>
<p style="text-indent: 2em">这样取出第11-20条记录!(先选再排序再选)</p>
<p style="text-indent: 2em">要先排序再选则须用select嵌套：内层排序外层选。 </p>
<p style="text-indent: 2em">rownum是随着结果集生成的，一旦生成，就不会变化了；同时,生成的结果是依次递加的，没有1就永远不会有2! </p>
<p style="text-indent: 2em">rownum 是在查询集合产生的过程中产生的伪列，并且如果where条件中存在 rownum 条件的话，则:</p>
<p style="text-indent: 2em">1： 假如判定条件是常量，则： </p>
<p style="text-indent: 2em">只能 rownum = 1, &lt;= 大于1 的自然数， = 大于1 的数是没有结果的；大于一个数也是没有结果的 </p>
<p style="text-indent: 2em">即 当出现一个 rownum 不满足条件的时候则 查询结束 this is stop key（一个不满足，系统将该记录过滤掉，则下一条记录的rownum还是这个，所以后面的就不再有满足记录，this is stop key）；</p>
<p style="text-indent: 2em">2： 假如判定值不是常量，则：</p>
<p style="text-indent: 2em">若条件是 = var , 则只有当 var 为1 的时候才满足条件，这个时候不存在 stop key ,必须进行full scan ,对每个满足其他where条件的数据进行判定，选出一行后才能去选rownum=2的行&#8230;&#8230;</p>
<p style="text-indent: 2em">以下摘自《中国IT实验室》</p>
<p style="text-indent: 2em">1.在oracle中实现select top n</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 由于oracle不支持select top语句，所以在oracle中经常是用order by跟rownum的组合来实现select top n的查询。</p>
<p style="text-indent: 2em">简单地说，实现方法如下所示：</p>
<p style="text-indent: 2em">select　列名１．．．列名ｎ　from&nbsp;&nbsp;&nbsp; </p>
<p style="text-indent: 2em">(select　列名１．．．列名ｎ　from 表名 order by 列名１．．．列名ｎ) </p>
<p style="text-indent: 2em">where rownum&lt;=n（抽出记录数） </p>
<p style="text-indent: 2em">order by rownum asc</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 下面举个例子简单说明一下。</p>
<p style="text-indent: 2em">顾客表customer(id,name)有如下数据：</p>
<p style="text-indent: 2em">ID NAME</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 01 first</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 02 Second</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 03 third</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 04 forth</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 05 fifth</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 06 sixth</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 07 seventh</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 08 eighth</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 09 ninth</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 10 last</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 则按NAME的字母顺抽出前三个顾客的SQL语句如下所示：</p>
<p style="text-indent: 2em">select * from</p>
<p style="text-indent: 2em">&nbsp;&nbsp; (select * from customer order by name)</p>
<p style="text-indent: 2em">&nbsp;&nbsp; where rownum&lt;=3</p>
<p style="text-indent: 2em">&nbsp;&nbsp; order by rownum asc</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 输出结果为：</p>
<p style="text-indent: 2em">&nbsp;&nbsp; ID NAME</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 08 eighth</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 05 fifth</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 01 first</p>
  <img src ="http://www.blogjava.net/wshsdlau/aggbug/379161.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wshsdlau/" target="_blank">哈希</a> 2011-05-10 17:32 <a href="http://www.blogjava.net/wshsdlau/archive/2011/05/10/379161.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>