??xml version="1.0" encoding="utf-8" standalone="yes"?>JLZZJLZZ亚洲乱熟无码,亚洲一区二区三区高清不卡,亚洲精品无码你懂的网站http://www.tkk7.com/wshsdlau/category/51795.html如何学好javaQ其实很单,只要用心体会Q慢慢积累!zh-cnFri, 25 May 2012 05:55:19 GMTFri, 25 May 2012 05:55:19 GMT60oracle数据库的配置http://www.tkk7.com/wshsdlau/archive/2012/02/09/379124.html哈希哈希Thu, 09 Feb 2012 03:56:00 GMThttp://www.tkk7.com/wshsdlau/archive/2012/02/09/379124.htmlhttp://www.tkk7.com/wshsdlau/comments/379124.htmlhttp://www.tkk7.com/wshsdlau/archive/2012/02/09/379124.html#Feedback0http://www.tkk7.com/wshsdlau/comments/commentRss/379124.htmlhttp://www.tkk7.com/wshsdlau/services/trackbacks/379124.htmloracle数据库的配置

一?/span>Oracle的配|?/span>

1、配|?/span>net manager

  依次选择开?#8212;>Oracle – OraHome92>Configuration and Migration Tools>Net Manager

选择本地—>服务命名Q点d侧绿色加?/span> 

输入Net服务?/span> 172.30.4.205_ora91 点击下一?/span> 

选择TCP/IPQ?/span>Internet协议Q?/span> 点击下一?/span> 

输入L?/span>172.30.4.205 点击下一?/span> 

选择(Oracle8i或更高版?/span>)服务名:ora91  点击下一?/span> 

点击试 

选择更改登陆Q输入用户名xiechaQ口?/span>xiecha 

点击定Q出现测试成功后选择关闭

点击完成 

保存|络配置 
参见|址Q?a >http://wenku.baidu.com/view/7685da64783e0912a2162aa9.html



哈希 2012-02-09 11:56 发表评论
]]>
PLSQL8.o破解?/title><link>http://www.tkk7.com/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.tkk7.com/wshsdlau/archive/2012/01/18/379125.html</guid><wfw:comment>http://www.tkk7.com/wshsdlau/comments/379125.html</wfw:comment><comments>http://www.tkk7.com/wshsdlau/archive/2012/01/18/379125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wshsdlau/comments/commentRss/379125.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wshsdlau/services/trackbacks/379125.html</trackback:ping><description><![CDATA[PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle ServerQ因此,PL/SQL~程也成了整个开发过E的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生力,充分发挥Oracle应用E序开发过E中的主要优ѝPL/SQL(Procedural Language/SQL)是一U过E化语言Q属于第三代语言Q它与C、C++、Java{语a一样关注于处理l节Q可以用来实现比较复杂的业务逻辑。它允许SQL的数据操U语a和查询语句包含在块结?block_structured)和代码过E语a中,使PL/SQL成ؓ一个功能强大的事务处理语言。在甲骨文数据库理斚wQPL/SQL是对l构化查询语aQSQLQ的q程语言扩展。PL/SQL的目的是联合数据库语a和过E语a。PL/SQL的基本单位叫做一个区D,׃个部份组成:一个申明部份,一个可q行部䆾Q和排除Q构建部分。 因ؓPL/SQL允许混合SQLx和过E结构,因此可以在将x发送到甲骨文系l去执行之前使用PL/SQL区段和副E序来组合SQLxQ没有PL/SQLQ甲骨文需要就每次处理SQLxQ在|络环境中,q将影响交通流量,而且增加响应旉。PL/SQL区段只被~译一ơƈ且以可运行的形式储存Q以降低响应旉?br />Enhancements in PL/SQL Developer 8.0.4<br />======================================<br />* SQL Window would always print SQL text, disregarding "Print SQL"<br />  preference<br />* Searching within special text (strings, comments) could be slow<br />* Key Configuration preference could reset to default instead of<br />  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 />  SQL statements<br />* Fixed issue with search in selection where incorrect characters<br />  could be replaced<br />* Duplicate items removed from description window<br />* View/Edit Data for tables with an owner with special characters<br />  would not add quotes to the owner<br />* UTFE characters were displayed incorrectly when Unicode support<br />  was enabled<br />* Loading the Macro Library could fail on Windows 7/Vista, <br />  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 />  formatting on the second sheet<br />* To-Do Item List was not up-to-date when opening a package spec &<br />  body<br /><a title="在新H口打开囄" target="_blank"></a><br />下蝲地址如下<br />源程序:<a target="_blank" rel="external">http://allroundautomations.swmirror.com/plsqldev804.exe</a><br />语言文g及手册:<a target="_blank" rel="external">http://www.allroundautomations.com/plsqldevlang/80/chinese.exe</a><br />注册信息如下<br />product codeQkfqtle46lqzbbvlzuvsrutst66yn6m7kl8s2trrtsapr<br />passwordQxs374ca<br />serial numberQ?775341736<br /> <img src ="http://www.tkk7.com/wshsdlau/aggbug/379125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wshsdlau/" target="_blank">哈希</a> 2012-01-18 18:00 <a href="http://www.tkk7.com/wshsdlau/archive/2012/01/18/379125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库操?/title><link>http://www.tkk7.com/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.tkk7.com/wshsdlau/archive/2011/12/17/379134.html</guid><wfw:comment>http://www.tkk7.com/wshsdlau/comments/379134.html</wfw:comment><comments>http://www.tkk7.com/wshsdlau/archive/2011/12/17/379134.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wshsdlau/comments/commentRss/379134.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wshsdlau/services/trackbacks/379134.html</trackback:ping><description><![CDATA[--修改TB_C_ACCOUNT_INFO中金账户信息Q增加字D:收款人名U、收ƾh电话?br />--q厂单表 TB_E_BACKFACTORY_BILLS 删除字段Q基金h、成品ID  CHAR(14 BYTE)<br />--alter table TB_E_BACKFACTORY_BILLS drop column CREATETIME;   <br />--alter table TB_E_BACKFACTORY_BILLS add CREATETIME CHAR(14 BYTE) not null;<br />--2 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 /> --alter table TB_E_BACKFACTORY_BILLS add FACTORY VARCHAR2(64);<br /> --alter table TB_E_BACKFACTORY_BILLS add description VARCHAR2(64);<br />--comment on column tb_e_backfactory_bills.description is '备注';     "CREATETIME"            CHAR(14 BYTE) NOT NULL ENABLE,<br />--4 alter table TB_E_BACKFACTORY_BILLS add PAYEETEL VARCHAR2(30) not null;<br />--5 alter table TB_E_BACKFACTORY_BILLS add ACCOUNT VARCHAR2(64) not null;<br />--6 alter table TB_E_BACKFACTORY_BILLS add RETURNDATE CHAR(14) not null;<br />--7 comment on column TB_E_BACKFACTORY_BILLS.PAYEENAME is '收款人名U?;<br />--8 comment on column TB_E_BACKFACTORY_BILLS.PAYEETEL is '收款人电?;<br />--9 comment on column TB_E_BACKFACTORY_BILLS.ACCOUNT is '银行帐号';<br />--10 comment on column TB_E_BACKFACTORY_BILLS.RETURNDATE is 'q厂日期';<br />--11alter table TB_L_FINPRODU_FINISH_PRODUCT drop column REMARK<br />--12 alter table TB_L_FINPRODU_FINISH_PRODUCT modify AGENCYBUYPRICE default 0 not null;<br />--13 alter table TB_L_FINPRODU_FINISH_PRODUCT add AGENCYBUYTOTAL NUMBER(15,4) default 0 not null;<br />--14 alter table TB_L_FINPRODU_FINISH_PRODUCT add BASEPRICE NUMBER(15,4) default 0 not null;<br />--15 alter table TB_L_FINPRODU_FINISH_PRODUCT add BASEPRICETOTAL NUMBER(15,4) default 0 not null;<br />--16 comment on column TB_L_FINPRODU_FINISH_PRODUCT.AGENCYBUYTOTAL is '代回购h格合?;<br />--17 comment on column TB_L_FINPRODU_FINISH_PRODUCT.BASEPRICE is '基础h';<br />--18comment on column TB_L_FINPRODU_FINISH_PRODUCT.BASEPRICETOTAL is '基础h合计';<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 '收款人名U?; <img src ="http://www.tkk7.com/wshsdlau/aggbug/379134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wshsdlau/" target="_blank">哈希</a> 2011-12-17 16:00 <a href="http://www.tkk7.com/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.tkk7.com/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.tkk7.com/wshsdlau/archive/2011/12/07/379141.html</guid><wfw:comment>http://www.tkk7.com/wshsdlau/comments/379141.html</wfw:comment><comments>http://www.tkk7.com/wshsdlau/archive/2011/12/07/379141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wshsdlau/comments/commentRss/379141.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wshsdlau/services/trackbacks/379141.html</trackback:ping><description><![CDATA[<p align="right"> </p> <p><span style="font-size: small; font-family: monospace"><span></p> <div id="jplddx3" class="dp-highlighter nogutter bg_c-sharp:nogutter:nocontrols"> <div id="hl3h39r" class="bar"></div> <ol class="dp-c"><li id="1j9xnb9" class="alt"><span>班  U目   分数  </span></li><li id="1d9n9pj" class=""><span>1     语文   8800  </span></li><li id="zxf99p3" class="alt"><span>1     数学   8420  </span></li><li id="dh3v393" class=""><span>1     p   7812  </span></li><li id="jll3f3p" class="alt"><span>……  </span></li><li id="n9lb9fj" class=""><span>2     语文   8715  </span></li><li id="thl13p3" class="alt"><span>2     数学   8511  </span></li><li id="1vv39fp" class=""><span>2     p   8512  </span></li><li id="x3zddv9" class="alt"><span>……  </span></li><li id="ppt993x" class=""><span>   </span></li><li id="jn3zrb9" class="alt"><span>   </span></li><li id="tf3rfpr" class=""><span>要求转换成下面这Ll果  </span></li><li id="znrx9r9" class="alt"><span>班    语文    数学    p  </span></li><li id="19jv3tl" class=""><span>1       8800    8420    7812  </span></li><li id="xrv3xj9" class="alt"><span>2       8715    8511    8512  </span></li></ol></div> <p align="right"> </span></span></p> <p> </p> <p>q是一个非常经典的 4属性的表设计模式,֐思义Q这L表一般有四列Q分别是Q?tt>entity_id</tt>, <tt>attribute_name</tt>, <tt>attribute_type, attribute_value Q这L设计使我们添加字D非常容易,如:我们x加一个物理成l是非常单的Q我们只要向表中插入一条记录即可。但是,q样的设计有一个非怸重的问题Q那是Q查询难度增加,查询效率非常差?/tt></p> <p>要想实现上面的查询有一个原则,那就是:通过case语句创造虚拟字D,使结果集成ؓ二维数组Q然后应用聚合函数返回单一记录。怎么P不理解,仔细看看下面的图和分析下面的语句你就理解了?/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"> </p> <div id="dx3tp99" class="dp-highlighter nogutter bg_c-sharp:nogutter:nocontrols"> <div id="3b9ft9j" class="bar"></div> <ol class="dp-c"><li id="33zdtll" class="alt"><span>create table score  </span></li><li id="d999nn9" class=""><span>(  </span></li><li id="fr3j99x" class="alt"><span>    banji integer,  </span></li><li id="bn3bxfd" class=""><span>    kemu varchar(10),   </span></li><li id="fpvvtbb" class="alt"><span>    fengshu integer  </span></li><li id="xbp3pfx" class=""><span>)  </span></li><li id="j99t9l9" class="alt"><span>go  </span></li><li id="r3pt9t9" class=""><span>   </span></li><li id="jv39bb3" class="alt"><span>insert into score values  </span></li><li id="jfr333p" class=""><span>(1, </span><span id="13xl3ht" class="string">'语文'</span><span>, 8800),  </span></span></li><li id="xrv9j9x" class="alt"><span>(1, </span><span id="f3d9bn9" class="string">'数学'</span><span>, 8420),  </span></span></li><li id="3br3ddl" class=""><span>(1, </span><span id="1zvlbrb" class="string">'p'</span><span>, 7812),  </span></span></li><li id="vhlbzp1" class="alt"><span>(2, </span><span id="rvpptt9" class="string">'语文'</span><span>, 8715),  </span></span></li><li id="rtfx39t" class=""><span>(2, </span><span id="19lzvdd" class="string">'数学'</span><span>, 8511),  </span></span></li><li id="rlznhh3" class="alt"><span>(2, </span><span id="pbf3t9z" class="string">'p'</span><span>, 8512)  </span></span></li><li id="zrn399t" class=""><span>go  </span></li><li id="9b9z993" class="alt"><span>   </span></li><li id="bt3tnfv" class=""><span>select banji,  </span></li><li id="tntjd9r" class="alt"><span>       max(yuwen)        语文,  </span></li><li id="txb9rpr" class=""><span>       max(shuxue)       数学,  </span></li><li id="bt9zv9d" class="alt"><span>       max(yingyu)       p  </span></li><li id="npdbx9f" class=""><span>from    </span></li><li id="r3j39x9" class="alt"><span>     (select  banji,  </span></li><li id="n9fbl9h" class=""><span>              </span><span id="rj399xh" class="keyword">case</span><span> kemu  </span></span></li><li id="prvz3b9" class="alt"><span>               when </span><span id="1dp9ndv" class="string">'语文'</span><span> then fengshu  </span></span></li><li id="pj3hlt9" class=""><span>               </span><span id="rdpl9vr" class="keyword">else</span><span> 0  </span></span></li><li id="3b93px3" class="alt"><span>             end                         yuwen,  </span></li><li id="j3d3bjb" class=""><span>             </span><span id="3drv9nn" class="keyword">case</span><span> kemu  </span></span></li><li id="rtz3nnn" class="alt"><span>               when </span><span id="3pb9h9l" class="string">'数学'</span><span> then fengshu  </span></span></li><li id="39fj3jr" class=""><span>               </span><span id="b3xjr99" class="keyword">else</span><span> 0  </span></span></li><li id="vplp39v" class="alt"><span>             end                         shuxue,  </span></li><li id="z9rv999" class=""><span>             </span><span id="399vh9n" class="keyword">case</span><span> kemu  </span></span></li><li id="r39nr9p" class="alt"><span>               when </span><span id="vx99nn9" class="string">'p'</span><span> then fengshu  </span></span></li><li id="h9j9xpp" class=""><span>               </span><span id="3xrxf9x" class="keyword">else</span><span> 0  </span></span></li><li id="x3p9dll" class="alt"><span>             end                         yingyu  </span></li><li id="1vhdz99" class=""><span>      from score  </span></li><li id="fhthb3z" class="alt"><span>      ) </span><span id="n99n39l" class="keyword">as</span><span> inner  </span></span></li><li id="9htf9xx" class=""><span>group by inner.banji  </span></li><li id="tdhth3x" class="alt"><span>order by 1  </span></li><li id="33993zz" class=""><span>go  </span></li></ol></div> <p align="right"> </span></span></p> <p> </p> <p>你可能正在感叹,q样的解x案是多么的y妙,可惜不是我想出来的,在这里,我也不敢把大师的思想据ؓ己有Q以上思想来自<SQL语言艺术>的第11章,想了解更全面的信息,大家可以参考?/p> <p> </p> <p align="right"> </p> <img src ="http://www.tkk7.com/wshsdlau/aggbug/379141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wshsdlau/" target="_blank">哈希</a> 2011-12-07 10:36 <a href="http://www.tkk7.com/wshsdlau/archive/2011/12/07/379141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>十四?q干净净卸蝲Oracle http://www.tkk7.com/wshsdlau/archive/2011/11/30/376834.html哈希哈希Wed, 30 Nov 2011 07:30:00 GMThttp://www.tkk7.com/wshsdlau/archive/2011/11/30/376834.htmlhttp://www.tkk7.com/wshsdlau/comments/376834.htmlhttp://www.tkk7.com/wshsdlau/archive/2011/11/30/376834.html#Feedback0http://www.tkk7.com/wshsdlau/comments/commentRss/376834.htmlhttp://www.tkk7.com/wshsdlau/services/trackbacks/376834.html

1?开始-Q设|-Q控刉板-Q管理工PQ服?
停止所有Oracle服务?

2?开始-Q程序-QOracle - OraHome81Q>Oracle Installation ProductsQ>Universal Installer
卸装所有Oracle产品Q但Universal Installer本n不能被删?

5?q行regeditQ选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLEQ按del键删除这个入口?

6?q行regeditQ选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesQ滚?
q个列表Q删除所有Oracle入口?

7?q行refeditQHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\ApplicationQ?
删除所有Oracle入口?

8?开始-Q设|-Q控刉板-Q系l-Q高U-Q环境变?
删除环境变量CLASSPATH和PATH中有关Oracle的设?

9?从桌面上、STARTUPQ启动)l、程序菜单中Q删除所有有关Oracle的组和图?

10?删除\Program Files\Oracle目录

11?重新启动计算机,重v后才能完全删除Oracle所在目?

12?删除与Oracle有关的文Ӟ选择Oracle所在的~省目录C:\OracleQ删除这个入口目录及所有子目录Qƈ从Windows 2000目录Q一般ؓC:\WINNTQ下删除以下文gORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini{等?

13?WIN.INI文g中若有[ORACLE]的标记段Q删除该D?

14?如有必要Q删除所有Oracle相关的ODBC的DSN



哈希 2011-11-30 15:30 发表评论
]]>
十四?q干净净卸蝲Oracle http://www.tkk7.com/wshsdlau/archive/2011/11/30/379143.html哈希哈希Wed, 30 Nov 2011 07:30:00 GMThttp://www.tkk7.com/wshsdlau/archive/2011/11/30/379143.htmlhttp://www.tkk7.com/wshsdlau/comments/379143.htmlhttp://www.tkk7.com/wshsdlau/archive/2011/11/30/379143.html#Feedback0http://www.tkk7.com/wshsdlau/comments/commentRss/379143.htmlhttp://www.tkk7.com/wshsdlau/services/trackbacks/379143.html

1?开始-Q设|-Q控刉板-Q管理工PQ服?
停止所有Oracle服务?

2?开始-Q程序-QOracle - OraHome81Q>Oracle Installation ProductsQ>Universal Installer
卸装所有Oracle产品Q但Universal Installer本n不能被删?

5?q行regeditQ选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLEQ按del键删除这个入口?

6?q行regeditQ选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ServicesQ滚?
q个列表Q删除所有Oracle入口?

7?q行refeditQHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\ApplicationQ?
删除所有Oracle入口?

8?开始-Q设|-Q控刉板-Q系l-Q高U-Q环境变?
删除环境变量CLASSPATH和PATH中有关Oracle的设?

9?从桌面上、STARTUPQ启动)l、程序菜单中Q删除所有有关Oracle的组和图?

10?删除\Program Files\Oracle目录

11?重新启动计算机,重v后才能完全删除Oracle所在目?

12?删除与Oracle有关的文Ӟ选择Oracle所在的~省目录C:\OracleQ删除这个入口目录及所有子目录Qƈ从Windows 2000目录Q一般ؓC:\WINNTQ下删除以下文gORACLE.INI、oradim73.INI、oradim80.INI、oraodbc.ini{等?

13?WIN.INI文g中若有[ORACLE]的标记段Q删除该D?

14?如有必要Q删除所有Oracle相关的ODBC的DSN



哈希 2011-11-30 15:30 发表评论
]]>
常用sqlhttp://www.tkk7.com/wshsdlau/archive/2011/06/08/379153.html哈希哈希Wed, 08 Jun 2011 09:55:00 GMThttp://www.tkk7.com/wshsdlau/archive/2011/06/08/379153.htmlhttp://www.tkk7.com/wshsdlau/comments/379153.htmlhttp://www.tkk7.com/wshsdlau/archive/2011/06/08/379153.html#Feedback0http://www.tkk7.com/wshsdlau/comments/commentRss/379153.htmlhttp://www.tkk7.com/wshsdlau/services/trackbacks/379153.htmlStudent(S#,Sname,Sage,Ssex) 学生?
Course(C#,Cname,T#) 评?
SC(S#,C#,score) 成W?
Teacher(T#,Tname) 教师?

问题Q?
1、查?#8220;001”评?#8220;002”评成W高的所有学生的学号Q?
  select a.S# from (select s#,score from SC where C#='001') a,(select s#,score
  from SC where C#='002') b
  where a.score>b.score and a.s#=b.s#;
2、查询^均成l大?0分的同学的学号和q_成WQ?
    select S#,avg(score)
    from sc
    group by S# having avg(score) >60;
3、查询所有同学的学号、姓名、选课数、Ll;
  select Student.S#,Student.Sname,count(SC.C#),sum(score)
  from Student left Outer join SC on Student.S#=SC.S#
  group by Student.S#,Sname
4、查询姓“?#8221;的老师的个敎ͼ
  select count(distinct(Tname))
  from Teacher
  where Tname like '?';
5、查询没学过“叶^”老师评同学的学受姓名;
    select Student.S#,Student.Sname
    from Student  
    where S# not in (select distinct( SC.S#) from SC,Course,Teacher where  SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶^');
6、查询学q?#8220;001”q且也学q编?#8220;002”评的同学的学号、姓名;
  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');
7、查询学q?#8220;叶^”老师所教的所有课的同学的学号、姓名;
  select S#,Sname
  from Student
  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#)=
     (select count(C#) from Course,Teacher  where Teacher.T#=Course.T# and Tname='叶^'));
8、查询课E编?#8220;002”的成l比评~号“001”评低的所有同学的学号、姓名;
  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
  from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;
9、查询所有课E成l小?0分的同学的学受姓名;
  select S#,Sname
  from Student
  where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);
10、查询没有学全所有课的同学的学号、姓名;
    select Student.S#,Student.Sname
    from Student,SC
    where Student.S#=SC.S# group by  Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);
11、查询至有一门课与学号ؓ“1001”的同学所学相同的同学的学号和姓名Q?
    select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';
12、查询至学q学号ؓ“001”同学所有一门课的其他同学学号和姓名Q?
    select distinct SC.S#,Sname
    from Student,SC
    where Student.S#=SC.S# and C# in (select C# from SC where S#='001');
13、把“SC”表中“叶^”老师教的评成W都更改ؓ此课E的q_成WQ?
    update SC set score=(select avg(SC_2.score)
    from SC SC_2
    where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶^');
14、查询和“1002”L同学学习的课E完全相同的其他同学学号和姓名;
    select S# from SC where C# in (select C# from SC where S#='1002')
    group by S# having count(*)=(select count(*) from SC where S#='1002');
15、删除学?#8220;叶^”老师评SC表记录;
    Delect SC
    from course ,Teacher  
    where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶^';
16、向SC表中插入一些记录,q些记录要求W合以下条gQ没有上q编?#8220;003”评的同学学受??
    可的^均成l;
    Insert SC select S#,'002',(Select avg(score)
    from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');
17、按q_成W从高C昄所有学生的“数据?#8221;?#8220;企业理”?#8220;p”三门的课E成l,按如下Ş式显C: 学生ID,,数据?企业理,p,有效评?有效q_?
    SELECT S# as 学生ID
        ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据?
        ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业理
        ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS p
        ,COUNT(*) AS 有效评? AVG(t.score) AS q_成W
    FROM SC AS t
    GROUP BY S#
    ORDER BY avg(t.score)  
18、查询各U成l最高和最低的分:以如下Ş式显C:评IDQ最高分Q最低分
    SELECT L.C# As 评ID,L.score AS 最高分,R.score AS 最低分
    FROM SC L ,SC AS R
    WHERE L.C# = R.C# and
        L.score = (SELECT MAX(IL.score)
                      FROM SC AS IL,Student AS IM
                      WHERE L.C# = IL.C# and IM.S#=IL.S#
                      GROUP BY IL.C#)
        AND
        R.Score = (SELECT MIN(IR.score)
                      FROM SC AS IR
                      WHERE R.C# = IR.C#
                  GROUP BY IR.C#
                    );
19、按各科q_成W从低到高和及格率的百分数从高C序
    SELECT t.C# AS 评?max(course.Cname)AS 评?isnull(AVG(score),0) AS q_成W
        ,100 * SUM(CASE WHEN  isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格癑ֈ?
    FROM SC T,Course
    where t.C#=course.C#
    GROUP BY t.C#
    ORDER BY 100 * SUM(CASE WHEN  isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC
20、查询如下课E^均成l和及格率的癑ֈ??1?昄): 企业理Q?01Q,马克思(002Q,OO&UML Q?03Q,数据库(004Q?
    SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业理q_?
        ,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业理及格癑ֈ?
        ,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思^均分
        ,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数
        ,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UMLq_?
        ,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格癑ֈ?
        ,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库^均分
        ,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数
  FROM SC

21、查询不同老师所教不同课E^均分从高C昄
  SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 评QD,MAX(C.Cname) AS 评名称,AVG(Score) AS q_成W
    FROM SC AS T,Course AS C ,Teacher AS Z
    where T.C#=C.C# and C.T#=Z.T#
  GROUP BY C.C#
  ORDER BY AVG(Score) DESC
22、查询如下课E成l第 3 名到W?6 名的学生成W单:企业理Q?01Q,马克思(002Q,UML Q?03Q,数据库(004Q?
    [学生ID],[学生姓名],企业理,马克?UML,数据?q_成W
    SELECT  DISTINCT top 3
      SC.S# As 学生学号,
        Student.Sname AS 学生姓名 ,
      T1.score AS 企业理,
      T2.score AS 马克?
      T3.score AS UML,
      T4.score AS 数据?
      ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as d
      FROM Student,SC  LEFT JOIN SC AS T1
                      ON SC.S# = T1.S# AND T1.C# = '001'
            LEFT JOIN SC AS T2
                      ON SC.S# = T2.S# AND T2.C# = '002'
            LEFT JOIN SC AS T3
                      ON SC.S# = T3.S# AND T3.C# = '003'
            LEFT JOIN SC AS T4
                      ON SC.S# = T4.S# AND T4.C# = '004'
      WHERE student.S#=SC.S# and
      ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)
      NOT IN
      (SELECT
            DISTINCT
            TOP 15 WITH TIES
            ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)
      FROM sc
            LEFT JOIN sc AS T1
                      ON sc.S# = T1.S# AND T1.C# = 'k1'
            LEFT JOIN sc AS T2
                      ON sc.S# = T2.S# AND T2.C# = 'k2'
            LEFT JOIN sc AS T3
                      ON sc.S# = T3.S# AND T3.C# = 'k3'
            LEFT JOIN sc AS T4
                      ON sc.S# = T4.S# AND T4.C# = 'k4'
      ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);

23、统计列印各U成l?各分数段人数:评ID,评名称,[100-85],[85-70],[70-60],[ <60]
    SELECT SC.C# as 评ID, Cname as 评名称
        ,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]
        ,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70]
        ,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60]
        ,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]
    FROM SC,Course
    where SC.C#=Course.C#
    GROUP BY SC.C#,Cname;

24、查询学生^均成l及其名?
      SELECT 1+(SELECT COUNT( distinct q_成W)
              FROM (SELECT S#,AVG(score) AS q_成W
                      FROM SC
                  GROUP BY S#
                  ) AS T1
            WHERE q_成W > T2.q_成W) as 名次,
      S# as 学生学号,q_成W
    FROM (SELECT S#,AVG(score) q_成W
            FROM SC
        GROUP BY S#
        ) AS T2
    ORDER BY q_成W desc;
 
25、查询各U成l前三名的记?(不考虑成Wq列情况)
      SELECT t1.S# as 学生ID,t1.C# as 评ID,Score as 分数
      FROM SC t1
      WHERE score IN (SELECT TOP 3 score
              FROM SC
              WHERE t1.C#= C#
            ORDER BY score DESC
              )
      ORDER BY t1.C#;
26、查询每门课E被选修的学生数
  select c#,count(S#) from sc group by C#;
27、查询出只选修了一门课E的全部学生的学号和姓名
  select SC.S#,Student.Sname,count(C#) AS 选课?
  from SC ,Student
  where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;
28、查询男生、女生h?
    Select count(Ssex) as L人数 from Student group by Ssex having Ssex='?;
    Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='?Q?
29、查询姓“?#8221;的学生名?
    SELECT Sname FROM Student WHERE Sname like '?';
30、查询同名同性学生名单,q统计同名h?
  select Sname,count(*) from Student group by Sname having  count(*)>1;;
31?981q出生的学生名单(注:Student表中Sage列的cd是datetime)
    select Sname,  CONVERT(char (11),DATEPART(year,Sage)) as age
    from student
    where  CONVERT(char(11),DATEPART(year,Sage))='1981';
32、查询每门课E的q_成WQ结果按q_成W升序排列Q^均成l相同时Q按评号降序排?
    Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;
33、查询^均成l大?5的所有学生的学号、姓名和q_成W
    select Sname,SC.S# ,avg(score)
    from Student,SC
    where Student.S#=SC.S# group by SC.S#,Sname having    avg(score)>85;
34、查询课E名UCؓ“数据?#8221;Q且分数低于60的学生姓名和分数
    Select Sname,isnull(score,0)
    from Student,SC,Course
    where SC.S#=Student.S# and SC.C#=Course.C# and  Course.Cname='数据?and score <60;
35、查询所有学生的选课情况Q?
    SELECT SC.S#,SC.C#,Sname,Cname
    FROM SC,Student,Course
    where SC.S#=Student.S# and SC.C#=Course.C# ;
36、查询Q何一门课E成l在70分以上的姓名、课E名U和分数Q?
    SELECT  distinct student.S#,student.Sname,SC.C#,SC.score
    FROM student,Sc
    WHERE SC.score>=70 AND SC.S#=student.S#;
37、查询不及格的课E,q按评号从大到排?
    select c# from sc where scor e <60 order by C# ;
38、查询课E编号ؓ003且课E成l在80分以上的学生的学号和姓名Q?
    select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';
39、求选了评的学生h?
    select count(*) from sc;
40、查询选修“叶^”老师所授课E的学生中,成W最高的学生姓名及其成W
    select Student.Sname,score
    from Student,SC,Course C,Teacher
    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# );
41、查询各个课E及相应的选修人数
    select count(*) from sc group by C#;
42、查询不同课E成l相同的学生的学受课E号、学生成l?
  select distinct  A.S#,B.score from SC A  ,SC B where A.Score=B.Score and A.C# <>B.C# ;
43、查询每门功成W最好的前两?
    SELECT t1.S# as 学生ID,t1.C# as 评ID,Score as 分数
      FROM SC t1
      WHERE score IN (SELECT TOP 2 score
              FROM SC
              WHERE t1.C#= C#
            ORDER BY score DESC
              )
      ORDER BY t1.C#;
44、统计每门课E的学生选修人数Q超q?0人的评才统计)。要求输E号和选修人数Q查询结果按人数降序排列Q查询结果按人数降序排列Q若人数相同Q按评号升序排? 
    select  C# as 评?count(*) as 人数
    from  sc  
    group  by  C#
    order  by  count(*) desc,c#  
45、检索至选修两门评的学生学?
    select  S#  
    from  sc  
    group  by  s#
    having  count(*)  >  =  2
46、查询全部学生都选修的课E的评号和评?
    select  C#,Cname  
    from  Course  
    where  C#  in  (select  c#  from  sc group  by  c#)  
47、查询没学过“叶^”老师讲授的Q一门课E的学生姓名
    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='叶^');
48、查询两门以上不及格评的同学的学号及其q_成W
    select S#,avg(isnull(score,0)) from SC where S# in (select S# from SC where score <60 group by S# having count(*)>2)group by S#;
49、检?#8220;004”评分数于60Q按分数降序排列的同学学?
    select S# from SC where C#='004'and score <60 order by score desc;
50、删?#8220;002”同学?#8220;001”评的成l?
delete from Sc where S#='001'and C#='001'

哈希 2011-06-08 17:55 发表评论
]]>
oracle的常用查询操?/title><link>http://www.tkk7.com/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.tkk7.com/wshsdlau/archive/2011/05/28/379154.html</guid><wfw:comment>http://www.tkk7.com/wshsdlau/comments/379154.html</wfw:comment><comments>http://www.tkk7.com/wshsdlau/archive/2011/05/28/379154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/wshsdlau/comments/commentRss/379154.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/wshsdlau/services/trackbacks/379154.html</trackback:ping><description><![CDATA[<div>1Q列有一个员工的所有部门?两个表联合查询,及group by...having的用? <br />select dname from dept where deptno in(select deptno from emp group by deptno having count(*)>1); <br /><br />2Q列金比“SMITH”多的所有员工?l典的自q接查询) <br />select ename from emp where sal>(select sal from emp where ename like'SMITH'); <br /><br />3Q列出所有员工的姓名及其直接上的姓名?多次对自己查?的取个别名,内部查询可以像对象一样引用外部的对象的字D,q里引用与编E中的作用域怼Q即与{}cL) <br /><br />select ename,(select ename from emp where empno in(a.mgr)) from emp a ; <br /><br />4Q列出受雇日期早于其直接上的所有员工?同上,日期可直接拿来比? <br /><br />select ename from emp a where HIREDATE<(select HIREDATE from emp where empno in(a.mgr)); <br /><br />5Q列出部门名U和q些部门的员工信息,同时列出那些没有员工的部?以emp表ؓ主,左连接查? <br /><br />select dname,emp.* from dept left join emp on dept.deptno=emp.deptno; <br /><br />6Q列出所?#8220;CLERK”Q办事员Q的姓名及其部门名称?域,注意()) <br /><br />select ename,(select dname from dept where deptno in(a.deptno)) as dname from emp a where JOB like'CLERK'; <br /><br />7Q列出最低薪金大?500的各U工作?<br />select job from emp where sal>1500; <br /><br />8Q列出在部门“SALES”Q销售部Q工作的员工的姓名,假定不知道销售部的部门编受?l典的两个表q接) <br /><br />select ename from emp where deptno=(select deptno from dept where dname like'SALES'); <br /><br />9Q列金高于公司^均薪金的所有员工?反复查自? <br /><br />select ename from emp where sal>( select avg( sal) from emp); <br /><br />10Q列Z“SCOTT”从事相同工作的所有员工?排除自己) <br /><br />select ename from emp where job in(select job from emp where ename like'SCOTT') and ename!='SCOTT' ; <br /><br />11Q列金等于部?0中员工的薪金的所有员工的姓名和薪金?any的用法,且排? <br /><br />select ename,sal from emp where sal=any(select sal from emp wheredeptno=30) and deptno!=30; <br /><br />12Q列金高于在部门30工作的所有员工的薪金的员工姓名和薪金?max的用? <br /><br />select sal,ename from emp where sal>(select max(sal) from emp where deptno=30); <br /><br /><br />13Q列出在每个(每个是关键字,Ҏgroup by)部门工作的员工数量、^均工资和q_服务期限?l典的group by用法) <br /><br />select deptno,count(*),avg(a.sal),avg(sysdate-HIREDATE) from emp a group by deptno; <br /><br />14Q列出所有员工的姓名、部门名U和工资.(l典的两个表的连接查询,用具体的名称替换一个表中的主键的id (解决很多人在实际q用中会遇到的不能绑定多列的问题)Q也可用where来查?,与题5比较) <br /><br />select ename,sal,(select dname from dept a where a.deptno=b.deptno)as dname from emp b; <br /><br />15Q列出所有部门的详细信息和部门h数?因ؓ?Q将昄dept和后面时表b的全部字D?注意:不只是dept的字D?注意*?) <br /><br />select * from dept a left join (select deptno,count(*) from emp group by deptno) b on a.deptno=b.deptno ; <br /><br />16Q列出各U?与每个同?参看?3))工作的最低工资? <br /><br />select job,min(sal) from emp group by job ; <br /><br /><br />17Q列出各个部门的MANAGERQ经?l理唯一Q不用group byQ的最低薪金?<br /><br />select min(sal) from emp where job like'MANAGER';(因ؓMANAGER是g是字D,所以不能用写) <br /><br />18Q列出所有员工的q工?按年薪从低到高排序?nvl:I{化函? <br /><br />select ename,sal+nvl(comm,0) as sal from emp order by sal ;</div> <img src ="http://www.tkk7.com/wshsdlau/aggbug/379154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/wshsdlau/" target="_blank">哈希</a> 2011-05-28 16:33 <a href="http://www.tkk7.com/wshsdlau/archive/2011/05/28/379154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle over() sum()http://www.tkk7.com/wshsdlau/archive/2011/05/13/379158.html哈希哈希Fri, 13 May 2011 09:01:00 GMThttp://www.tkk7.com/wshsdlau/archive/2011/05/13/379158.htmlhttp://www.tkk7.com/wshsdlau/comments/379158.htmlhttp://www.tkk7.com/wshsdlau/archive/2011/05/13/379158.html#Feedback0http://www.tkk7.com/wshsdlau/comments/commentRss/379158.htmlhttp://www.tkk7.com/wshsdlau/services/trackbacks/379158.html所用数据:
SELECT a.deptno, a.employename, a.salary
  FROM t_salary a

000001         李可                              1000
000001         李强                              2000
000001         杨R?nbsp;                           4000
000002         童家?nbsp;                           3000
000002         姜文                              3000
000002         |文                              3000
000003         H嫡                              3000
000003         童家?nbsp;                           3000
000003         童家?nbsp;                           3000
000004         于名                              4000
SELECT A.deptno, A.employename,A.salary,
--1 按照名称q行分区Q同时按照名U进行合?nbsp;
SUM(A.salary)OVER(PARTITION BY A.employename) AS SUM_INC_ONLY,
--2 按照名称q行累计 
SUM(A.salary)OVER(ORDER BY A.employename) AS SUM_INC,
--3   ?nbsp;1 效果相同 
SUM(A.salary)OVER(PARTITION BY A.employename ORDER BY A.employename) AS SUM_INC_NAME,
--4 按照部门分组Q部门内q行合计。名U相同时q行累计 
SUM(A.salary)OVER(PARTITION BY A.deptno ORDER BY A.employename) AS SUM_INC_DEP,
--5 按照部门,名称分组Q部门名U相同时q行合计 
SUM(A.salary)OVER(PARTITION BY A.deptno,A.employename ) AS SUM_INC_DEP_NAM
FROM t_salary A


所得结果:
DEPTNO     EMPLOYENAME     SALARY     SUM_INC_ONLY     SUM_INC     SUM_INC_NAME     SUM_INC_DEP     SUM_INC_DEP_NAM
000002     姜文    3000    3000    3000    3000    3000    3000
000001     李可    1000    1000    4000    1000    1000    1000
000001     李强    2000    2000    6000    2000    3000    2000
000002     |文    3000    3000    9000    3000    6000    3000
000002     童家?nbsp;   3000    9000    18000    9000    9000    3000
000003     童家?nbsp;   3000    9000    18000    9000    6000    6000
000003     童家?nbsp;   3000    9000    18000    9000    6000    6000
000001     杨R?nbsp;   4000    4000    22000    4000    7000    4000
000004     于名    4000    4000    26000    4000    4000    4000
000003     H嫡    3000    3000    29000    3000    9000    3000


哈希 2011-05-13 17:01 发表评论
]]>
oracle中rownum与rowidhttp://www.tkk7.com/wshsdlau/archive/2011/05/10/379161.html哈希哈希Tue, 10 May 2011 09:32:00 GMThttp://www.tkk7.com/wshsdlau/archive/2011/05/10/379161.htmlhttp://www.tkk7.com/wshsdlau/comments/379161.htmlhttp://www.tkk7.com/wshsdlau/archive/2011/05/10/379161.html#Feedback0http://www.tkk7.com/wshsdlau/comments/commentRss/379161.htmlhttp://www.tkk7.com/wshsdlau/services/trackbacks/379161.html首先来说一下rownum与rowid含义Q?/p>

֐思义rownum是行数/行号Q而rowid是~码/~号/唯一识别P所以他是类?#8220;AAAR8gAAEAAAAErAAK”的编P注意他是没有先后序的,也就是说他和数据入库旉没有M关系Q打个比方:他就像磁盘、内存存储数据用的是16q制的地址一栗?/span>

他们都是伪列Q可以理解成表中的一个列只是他们q不是你创徏的。同h伪列区别是什么呢Q?/p>

rowid是你录入数据时有数据库自动ؓq条记录d的唯一?8位编h一个物理编L于找到这条记录(Z说一句这也是Z么数据优调的时候强 调尽量用rowid的原因)Q他是不会随着查询而改变的 除非在表发生Ud(比如表空间变化,数据导入/导出以后)Q才会发生变化?/p>

rownum是根据sql查询后得到的l果自动加上ȝQ但是他却不受到sql中order by排序的媄响,因ؓ他和rowid的顺序一hpȝ按照记录插入时的序l记录排的号Q顺序的、无跌Q?nbsp;但是如果你想让rownum和order by一L序 那么可以使用子查询,形如Qselect rownum,t.* from (select * from 表空间名 order by 字段? t  q样的话rownum是Ҏ该字D进行排序的~号了,Z么会q样呢,本h理解Qrownum是根据表记录输出的行P与筛选语句、排序语句都无关所? 当用子查询时{于生成了一个表于是按照这张表?开始排序了?同样Q也可以用下面要提得到的分析函数中的row_number() over(order by 需要排序的字段??/p>

  

值得一提的是MSSQL是没有rownum和rowid的?/em>

下面说说分析函数row_number()、rank()、dense_rank()

ROW_NUMBER()Q?
Row_number函数q回一个唯一的|当碰到相同数据时Q排名按照记录集中记录的序依次递增?row_number()和rownum差不多,功能更强一点(可以在各个分l内?开时排序)Q?span style="text-decoration: underline;">因ؓrow_number()是分析函数而rownum是伪列所以row_number()一定要over而rownum不能over?/span>

RANK()Q?br /> Rank函数q回一个唯一的|除非遇到相同的数据,此时所有相同数据的排名是一LQ同时会在最后一条相同记录和下一条不同记录的排名之间I出排名?span style="text-decoration: underline;">rank()是蟩跃排?/span>Q有两个W二名时接下来就是第四名Q同h在各个分l内Q?/p>

DENSE_RANK()Q?br /> Dense_rank函数q回一个唯一的|除非当碰到相同数据,此时所有相同数据的排名都是一L?br /> dense_rank()是连l排?/span>Q有两个W二名时仍然跟着W三名。他和row_number的区别在于row_number是没有重复值的?/p>

一Q什么是伪列RowIDQ?/p>

1,首先是一U数据类型,唯一标识一条记录物理位|的一个idQ基?4位编码的18个字W显C?/p>

2,未存储在表中Q可以从表中查询Q但不支持插入,更新Q删除它们的倹{?/p>

二,RowID的用?/p>

1,在开发中使用频率应该是挺多的Q特别在一些update语句中用更加频J。所以oracle ERP中大部䆾的视N会加入rowidq个字段?/p>

   在一些cursor定义时也不了加入rowid。但往往我们在开发过E中Q由于连接的表很多,再加上程序的复制Q有时忽略了rowid对应的是那一个表中rowidQ所以有时过E出错,

   往往发上很多旉L错,最后查出来既然是update时带的rowidq此表的rowid,所以在发现很多ơ的错误Ӟ重视rowidh了,开发中一定要注意rowid的匹?/p>

2Q能以做快的方式讉K表中的一行?/p>

3Q能昄表的行是如何存储的?/p>

4Q作中唯一标识?/p>

三,RowID的组?/p>

rowid定了每条记录是在Oracle中的哪一个数据对象,数据文g、块、行上?

ROWID 的格式如下:

   数据对象~号        文g~号        块编?nbsp;           行编?

   OOOOOO             FFF                BBBBBB    RRR

   ?data_object_id# + rfile# + block# + row#   l成Q占?0个bytes的空_

    32bit?data_object_id#,

    10 bit ?rfile#,

    22bit ?block#,

    16 bit ?row#.

   所以每个表I间不能过1023?数据文g?/p>

四,RowID的应?/p>

1Q查扑֒删除重复记录

   当试囑֯库表中的某一列或几列创徏唯一索引Ӟ

   pȝ提示 ORA-01452 Q不能创建唯一索引Q发现重复记录?

    /*conn scott/tiger

    Create table empa as select * from emp;

    插入重复记录

    insert into empa select * from emp where empno = 7369;

    insert into empa select * from emp where empno = 7839;

    insert into empa select * from emp where empno = 7934;

    */

   查找重复记录的几U方法:

    查找大量重复记录

    select empno from empa group by empno having count(*) >1;

    Select * From empa Where ROWID Not In(Select Min(ROWID) From empa Group By empno);

    查找量重复记录

    select * from empa a where rowid<>(select max(rowid) from empa where empno=a.empno );

   删除重复记录的几U方法:

    (1).适用于有大量重复记录的情?列上建有索引的时候,用以下语句效率会很高)Q?

    Delete empa Where empno In (Select empno From empa Group By empno Having Count(*) > 1)

    And ROWID Not In (Select Min(ROWID) From empa Group By empno Having Count(*) > 1);

  

    Delete empa Where ROWID Not In(Select Min(ROWID) From empa Group By empno);

  

    (2).适用于有量重复记录的情?注意Q对于有大量重复记录的情况,用以下语句效率会很低)Q?/p>

    Delete empa a where rowid<>(select max(rowid) from empa where empno=a.empno );

---------------------------------------------------------------------------------------------------------------------------------------------------

注意Qrownum?开始;

           rownum按照记录插入时的序l记录排序,所以有order by的子句时一定要注意啊!

           使用时rownumQorder by字段是否Z键有什么媄响?

           子查询中rownum rnQ而rn用到外查询中到底是怎样的序列?

            若id主键是按照从到大的序插入的,select语句没有group by 和order by的子句时Qrownum的顺序和id序基本一致?/p>

对于 Oracle ?rownum 问题Q很多资料都说不支持>,>=,=,between...andQ只能用以上W号(<?lt;=?=)Qƈ非说?gt;,& gt;=,=,between..and 时会提示SQL语法错误Q而是l常是查不出一条记录来Q还会出C乎是莫名其妙的结果来Q其实您只要理解好了q个 rownum 伪列的意义就不应该感到惊奇,同样是伪列,rownum ?rowid 可有些不一P下面以例子说?/p>

假设某个?t1(c1) ?20 条记?/p>

如果?select rownum,c1 from t1 where rownum < 10, 只要是用于P查出来的l果很容易地与一般理解在概念上能达成一_应该不会有Q何疑问的?/p>

可如果用 select rownum,c1 from t1 where rownum > 10 (如果写下q样的查询语句,q时候在您的头脑中应该是惛_到表中后?0条记?Q你׃发现Q显C出来的l果要让您失望了Q也许您q会怀疑是不谁删了一 些记录,然后查看记录敎ͼ仍然?20 条啊Q那问题是出在哪呢?

先好好理?rownum 的意义吧。因为ROWNUM是对l果集加的一个伪列,卛_查到l果集之后再加上ȝ一个列 (Q先要有l果?。简单的?rownum 是对W合条gl果的序列号。它L?开始排L。所以你选出的结果不可能没有1Q而有其他大于1的倹{所以您没办法期望得C面的l果集:

11 aaaaaaaa

12 bbbbbbb

13 ccccccc

.................

rownum >10 没有记录Q因为第一条不满L的话Q第二条的ROWNUM又成?Q所以永q没有满x件的记录。或者可以这L解:

ROWNUM是一个序列,是oracle数据库从数据文g或缓冲区中读取数据的序。它取得W? 一条记录则rownumgؓ1Q第二条?Q依ơ类推。如果你?gt;,>=,=,between...andq些条gQ因Z~冲区或数据文g 中得到的W一条记录的rownum?Q则被删除,接着取下条,可是它的rownumq是1Q又被删除,依次cLQ便没有了数据?/p>

有了以上从不同方面徏立v来的?rownum 的概念,那我们可以来认识使用 rownum 的几U现?/p>

1. select rownum,c1 from t1 where rownum != 10 Z是返回前9条数据呢Q它?select rownum,c1 from tablename where rownum < 10 q回的结果集是一L呢?

      因ؓ是在查询到结果集后,昄完第 9 条记录后Q之后的记录也都?!= 10,或?>=10,所以只昄前面9条记录。也可以q样理解Qrownum ?后的记录?rownum?0Q因条g? !=10Q所以去掉,其后记录补上Qrownum又是10Q也LQ如果下M只会显C前?条记录了?/p>

2. Z?rownum >1 时查不到一条记录,?rownum >0 ?rownum >=1 却LC所有的记录Q?/p>

      因ؓ rownum 是在查询到的l果集后加上ȝQ它L?开始?/p>

3. Z?between 1 and 10 或?between 0 and 10 能查到结果,而用 between 2 and 10 却得不到l果Q?/p>

       原因同上一P因ؓ rownum L?1 开始。从上可以看出,M时候想?rownum = 1 q条记录抛弃是不对的Q它在结果集中是不可或缺的,了rownum=1 像IZ楼阁一般不能存在,所以你?rownum 条g要包含到 1 ?/p>

但如果就是想要用 rownum > 10 q种条g的话话就要用嵌套语句,?rownum 先生成,然后对他q行查询?/p>

select *

from (selet rownum as rnQt1.* from a where ...)

where rn >10

一般代码中对结果集q行分页是q么q的?/p>

另外Qrowid ?rownum 虽都被称Z列,但它们的存在方式是不一LQrowid 可以说是物理存在的,表示记录在表I间中的唯一位置IDQ在DB中唯一。只要记录没被搬动过Qrowid是不变的。rowid 相对于表来说又像表中的一般列Q所以以 rowid 为条件就不会?rownum那些情况发生?/p>

另外q要注意Qrownum不能以Q何基表的名称作ؓ前缀?/p>

对于rownum来说它是oraclepȝ序分配Z查询q回的行的编Pq回的第一行分配的?Q第二行?Q依此类推,q个伪字D可以用于限制查询返回的总行敎ͼ且rownum不能以Q何表的名UC为前~?/p>

(1) rownum 对于{于某值的查询条g

如果希望扑ֈ学生表中W一条学生的信息Q可以用rownum=1作ؓ条g。但是想扑ֈ学生? 中第二条学生的信息,使用rownum=2l果查不到数据。因为rownum都是?开始,但是1以上的自然数在rownum做等于判断是时认为都? false条gQ所以无法查到rownum = nQn>1的自然数Q?/p>

SQL> select rownum,id,name from student where rownum=1;Q可以用在限制返回记录条数的地方Q保证不出错Q如Q隐式游标)

SQL> select rownum,id,name from student where rownum =2;

    ROWNUM ID     NAME

Q?Qrownum对于大于某值的查询条g

   如果xCW二行记录以后的记录Q当使用rownum>2是查不出记录的,原因是由于rownum是一个L?开始的伪列QOracle 认ؓrownum> n(n>1的自然数)q种条g依旧不成立,所以查不到记录?/p>

查找到第二行以后的记录可使用以下的子查询Ҏ来解冟뀂注意子查询中的rownum必须要有别名Q否则还是不会查录来Q这是因为rownum不是某个表的列,如果不v别名的话Q无法知道rownum是子查询的列q是L询的列?/p>

SQL>select * from(select rownum no ,id,name from student) where no>2;

        NO ID     NAME

---------- ------ ---------------------------------------------------

         3 200003 李三

         4 200004 赵四

Q?Qrownum对于于某值的查询条g

rownum对于rownum<nQ?n>1的自然数Q的条g认ؓ是成立的Q所以可以找到记录?/p>

SQL> select rownum,id,name from student where rownum <3;

    ROWNUM ID     NAME

---------- ------ ---------------------------------------------------

        1 200001 张一

        2 200002 王二

查询rownum在某区间的数据,必须使用子查询。例如要查询rownum在第二行到第三行? 间的数据Q包括第二行和第三行数据Q那么我们只能写以下语句Q先让它q回于{于三的记录行,然后在主查询中判断新的rownum的别名列大于{于二的? 录行。但是这L操作会在大数据集中媄响速度?/p>

SQL> select * from (select rownum no,id,name from student where rownum<=3 ) where no >=2;

        NO ID     NAME

---------- ------ ---------------------------------------------------

         2 200002 王二

         3 200003 李三

Q?Qrownum和排?nbsp; 

Oracle中的rownum的是在取数据的时候生的序号Q所以想Ҏ定排序的数据L定的rowmun行数据就必须注意了?/p>

SQL> select rownum ,id,name from student order by name;

    ROWNUM ID     NAME

---------- ------ ---------------------------------------------------

         3 200003 李三

         2 200002 王二

         1 200001 张一

         4 200004 赵四

可以看出Qrownumq不是按照name列来生成的序受系l是按照记录插入时的序l记录排的号Qrowid也是序分配的。ؓ了解册个问题,必须使用子查询;

SQL> select rownum ,id,name from (select * from student order by name);

    ROWNUM ID     NAME

---------- ------ ---------------------------------------------------

         1 200003 李三

         2 200002 王二

         3 200001 张一

         4 200004 赵四

q样成了按name排序Qƈ且用rownum标出正确序号Q有到大)

W者在工作中有一上百万条记录的表Q在jsp面中需对该表进行分|C,便考虑用rownum来作Q下面是具体Ҏ(每页昄20?Q?

“select * from tabname where rownum<20 order by name" 但却发现oracle却不能按自己的意愿来执行Q而是先随便取20条记录,然后再order byQ后l咨询oracle,说rownum实pP想用的话Q只能用子查询来实现先排序,后rownumQ方法如下:

"select * from (select * from tabname order by name) where rownum<20",但这样一来,效率会低很多?

后经W者试验,只需在order by 的字D上加主键或索引卛_让oracle先按该字D|序,然后再rownumQ方法不变:    “select * from tabname where rownum<20 order by name"

取得某列中第N大的?/p>

select column_name from

(select table_name.*,dense_rank() over (order by column desc) rank from table_name)

where rank = &NQ?/p>

假如要返回前5条记录:

select * from tablename where rownum<6;(或是rownum <= 5 或是rownum != 6)

假如要返回第5-9条记录:

select * from tablename

where …

and rownum<10

minus

select * from tablename

where …

and rownum<5

order by name

选出l果后用name排序昄l果?先选再排序)

注意Q只能用以上W号(<?lt;=?=)?/p>

select * from tablename where rownum != 10;q回的是前9条记录?

不能用:>,>=,=,Between...and。由于rownum是一个L?开始的伪列QOracle 认ؓq种条g不成立?/p>

另外Q这个方法更快:

select * from (

select rownum r,a from yourtable

where rownum <= 20

order by name )

where r > 10

q样取出W?1-20条记?(先选再排序再?

要先排序再选则ȝselect嵌套Q内层排序外层选?

rownum是随着l果集生成的Q一旦生成,׃会变化了Q同?生成的结果是依次递加的,没有1永q不会有2!

rownum 是在查询集合产生的过E中产生的伪列,q且如果where条g中存?rownum 条g的话Q则:

1Q?假如判定条g是常量,则:

只能 rownum = 1, <= 大于1 的自然数Q?= 大于1 的数是没有结果的Q大于一个数也是没有l果?

?当出C?rownum 不满x件的时候则 查询l束 this is stop keyQ一个不满Q系l将该记录过滤掉Q则下一条记录的rownumq是q个Q所以后面的׃再有满记录Qthis is stop keyQ;

2Q?假如判定g是常量,则:

若条件是 = var , 则只有当 var ? 的时候才满条gQ这个时候不存在 stop key ,必须q行full scan ,Ҏ个满_他where条g的数据进行判定,选出一行后才能去选rownum=2的行……

以下摘自《中国IT实验室?/p>

1.在oracle中实现select top n

   ׃oracle不支持select top语句Q所以在oracle中经常是用order by跟rownum的组合来实现select top n的查询?/p>

单地_实现Ҏ如下所C:

select 列名Q.Q.列名n from   

(select 列名Q.Q.列名n from 表名 order by 列名Q.Q.列名?

where rownum<=nQ抽录数Q?

order by rownum asc

   下面举个例子单说明一下?/p>

֮表customer(id,name)有如下数据:

ID NAME

   01 first

   02 Second

   03 third

   04 forth

   05 fifth

   06 sixth

   07 seventh

   08 eighth

   09 ninth

   10 last

   则按NAME的字母顺抽出前三个顾客的SQL语句如下所C:

select * from

   (select * from customer order by name)

   where rownum<=3

   order by rownum asc

   输出l果为:

   ID NAME

   08 eighth

   05 fifth

   01 first



哈希 2011-05-10 17:32 发表评论
]]>
վ֩ģ壺 ޾ƷԲ߹ۿ| һػƬ| ޳avƬ| žƷƵ| þù| Ƶ߹ۿַ| ձxxwwxxwwƵ| ߹ۿվ| ۺУ԰ɫ| ƷŮþþ| 69ӰԺëƬѹۿƵ| ޵һ͵Ľ| ˳վۿ| ˬִ̼ëƬ| Ļѿ| ɫ18վWWW߲| þҹɫƷav| Ʒѹۿþ| ¾þƵ| ޱ龫Ʒһ| vaĻþ| ƷþƵ| 91Ʒž߹ۿ| ɫһƵ| ˳ɸ߲| ޾ƷƬ߹ۿƷĻ | AVƬɫ߹ۿ| ձ߹ۿv| ޾Ʒ| ߹ۿ| AV֮Ʒ| ߵӰ㶮| AרAV| øѹۿ| »ɫվ| AV߲| Ʒ޾Ʒ2021 | պһ| ۲ӰԺѹۿ| 91ƷѹƬ| ѾѾӰԺ߹ۿ|