??xml version="1.0" encoding="utf-8" standalone="yes"?> 一?/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
]]>
======================================
* SQL Window would always print SQL text, disregarding "Print SQL"
preference
* Searching within special text (strings, comments) could be slow
* Key Configuration preference could reset to default instead of
using the defined keys when using multiple preference sets
* Export to Excel would interpret data beginning with = as formula
* Column names starting with a digit were not implicitly quoted in
SQL statements
* Fixed issue with search in selection where incorrect characters
could be replaced
* Duplicate items removed from description window
* View/Edit Data for tables with an owner with special characters
would not add quotes to the owner
* UTFE characters were displayed incorrectly when Unicode support
was enabled
* Loading the Macro Library could fail on Windows 7/Vista,
resulting in a "list index out of bounds" error message
* Debugger could hang after an exception on oracle11g
* Code Assistant can now complete database link names
* Copy all to Excel in the SQL Window would not have correct
formatting on the second sheet
* To-Do Item List was not up-to-date when opening a package spec &
body
下蝲地址如下
源程序:http://allroundautomations.swmirror.com/plsqldev804.exe
语言文g及手册:http://www.allroundautomations.com/plsqldevlang/80/chinese.exe
注册信息如下
product codeQkfqtle46lqzbbvlzuvsrutst66yn6m7kl8s2trrtsapr
passwordQxs374ca
serial numberQ?775341736
]]>
--alter table TB_E_BACKFACTORY_BILLS drop column CREATETIME;
--alter table TB_E_BACKFACTORY_BILLS add CREATETIME CHAR(14 BYTE) not null;
--2 alter table TB_E_BACKFACTORY_BILLS drop column FINISH_PRODUCT_ID;
alter table TB_E_BACKFACTORY_BILLS add FACTORY VARCHAR2(64) not null;
--3alter table TB_E_BACKFACTORY_BILLS add PAYEENAME VARCHAR2(64) not null;
--alter table TB_E_BACKFACTORY_BILLS add FACTORY VARCHAR2(64);
--alter table TB_E_BACKFACTORY_BILLS add description VARCHAR2(64);
--comment on column tb_e_backfactory_bills.description is '备注'; "CREATETIME" CHAR(14 BYTE) NOT NULL ENABLE,
--4 alter table TB_E_BACKFACTORY_BILLS add PAYEETEL VARCHAR2(30) not null;
--5 alter table TB_E_BACKFACTORY_BILLS add ACCOUNT VARCHAR2(64) not null;
--6 alter table TB_E_BACKFACTORY_BILLS add RETURNDATE CHAR(14) not null;
--7 comment on column TB_E_BACKFACTORY_BILLS.PAYEENAME is '收款人名U?;
--8 comment on column TB_E_BACKFACTORY_BILLS.PAYEETEL is '收款人电?;
--9 comment on column TB_E_BACKFACTORY_BILLS.ACCOUNT is '银行帐号';
--10 comment on column TB_E_BACKFACTORY_BILLS.RETURNDATE is 'q厂日期';
--11alter table TB_L_FINPRODU_FINISH_PRODUCT drop column REMARK
--12 alter table TB_L_FINPRODU_FINISH_PRODUCT modify AGENCYBUYPRICE default 0 not null;
--13 alter table TB_L_FINPRODU_FINISH_PRODUCT add AGENCYBUYTOTAL NUMBER(15,4) default 0 not null;
--14 alter table TB_L_FINPRODU_FINISH_PRODUCT add BASEPRICE NUMBER(15,4) default 0 not null;
--15 alter table TB_L_FINPRODU_FINISH_PRODUCT add BASEPRICETOTAL NUMBER(15,4) default 0 not null;
--16 comment on column TB_L_FINPRODU_FINISH_PRODUCT.AGENCYBUYTOTAL is '代回购h格合?;
--17 comment on column TB_L_FINPRODU_FINISH_PRODUCT.BASEPRICE is '基础h';
--18comment on column TB_L_FINPRODU_FINISH_PRODUCT.BASEPRICETOTAL is '基础h合计';
--0alter table TB_C_ACCOUNT_INFO add RECEIVERNAME VARCHAR2(64) not null;
--alter table TB_C_ACCOUNT_INFO add RECEIVERTELEPHONE VARCHAR2(64) ;
---comment on column TB_C_ACCOUNT_INFO.RECEIVERNAME is '收款人名U?;
]]>
q是一个非常经典的 4属性的表设计模式,思义Q这L表一般有四列Q分别是Q?tt>entity_id, attribute_name, attribute_type, attribute_value Q这L设计使我们添加字D非常容易,如:我们x加一个物理成l是非常单的Q我们只要向表中插入一条记录即可。但是,q样的设计有一个非怸重的问题Q那是Q查询难度增加,查询效率非常差?/tt>
要想实现上面的查询有一个原则,那就是:通过case语句创造虚拟字D,使结果集成ؓ二维数组Q然后应用聚合函数返回单一记录。怎么P不理解,仔细看看下面的图和分析下面的语句你就理解了?/p>
你可能正在感叹,q样的解x案是多么的y妙,可惜不是我想出来的,在这里,我也不敢把大师的思想据ؓ己有Q以上思想来自<SQL语言艺术>的第11章,想了解更全面的信息,大家可以参考?/p>
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
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
思义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 ?da 32bit?da 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
]]>