这里描写的 SELECT N 包含如许几种情形:
1. 拔取TOP N行纪录
2. 拔取N1-N2行纪录
3. 拔取FOOT N行纪录
固然需求思索是不是有ORDER BY子句的情形, 上面试以体系视图CAT为例分离申明.
注: A. 为没有ORDER BY的情形
B. 有ORDER BY的情形
1. 拔取 TOP N 行纪录
A. SELECT * FROM CAT WHERE ROWNUM<=N
B. SELECT * FROM
( SELECT * FROM CAT ORDER BY TABLE_TYPE )
WHERE ROWNUM<=N
2. 拔取N1-N2行纪录
A. SELECT TABLE_NAME,TABLE_TYPE FROM
( SELECT ROWNUM ROWSEQ,TABLE_NAME,TABLE_TYPE FROM CAT )
WHERE ROWSEQ BETWEEN N1 AND N2;
或:
SELECT * FROM CAT WHERE ROWNUM<=N2
MINUS
SELECT * FROM CAT WHERE ROWNUM<N1
B. SELECT TABLE_NAME,TABLE_TYPE FROM
( SELECT ROWNUM ROWSEQ,X.* FROM (SELECT * FROM CAT ORDER BY TABLE_TYPE) X)
WHERE ROWSEQ BETWEEN N1+1 AND N2;
3. 拔取FOOT N行纪录
这里是申明不晓得纪录集的纪录个数的情形, 假如已知, 用下面2的办法便可
A. SELECT TABLE_NAME,TABLE_TYPE FROM
( SELECT ROWNUM ROWSEQ,TABLE_NAME,TABLE_TYPE FROM CAT )
WHERE ROWSEQ > ( SELECT COUNT(*)-N FROM CAT )
B. SELECT TABLE_NAME,TABLE_TYPE FROM
( SELECT ROWNUM ROWSEQ,TABLE_NAME,TABLE_TYPE FROM CAT ORDER BY TABLE_TYPE)
WHERE ROWSEQ > ( SELECT COUNT(*)-N FROM CAT )
或
SELECT * FROM
( SELECT TABLE_NAME,TABLE_TYPE FROM CAT ORDER BY TABLE_TYPE DESC)
WHERE ROWNUM<=N
以上在ORACLE8.1.5 for Windows2000pro 上测试经由过程
-- end --
oracle FAQ(1) from chao_ping
1.疾速收拾整顿破裂的表(在Oracle8i里边才可以如许利用)
在Oracle8i里边可以创立反序索引。(CREATE INDEX i ON t (a,b,c) REVERSE;)。因为反序索引的相邻键值不是寄存在物理相邻的地位,因而只要全索引扫描或经由过程单个列这一类语句才干够无效使用这些索引。这类反序索引在Oracle并行办事器上可以较好地调和分歧实例对数据库的修正,可以在必定水平上进步体系功能。
当数据库方才创立的时分,SYS的暗码默许为change_on_install,而SYSTEM的暗码是manager,而INTERNAL则基本就没有暗码。因而,创立完数据库以后,第一件要做的工作就是改动以上三个用户的口令。INTERNAL的口令可以用后面提到过的办法来改动,而SYSTEM,SYS则可以直接用ALTER USER username IDENTIFIED BY password;来更改。注重,在Oracle8i入手下手,ALTER USER SYS IDENTIFIED BY password;同时也会更改INTERNAL的暗码,假如你为INTERNAL设置了暗码的话,同时,即刻把SYSDBA,SYSOPER这两个脚色授与担任办理这个数据库的用户。关于那些利用INTERNAL来毗连数据库的剧本,也要响应的作一些修正。