首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

Oracle序列的有关问题

2012-01-31 
Oracle序列的问题?Oracle序列的问题(1)SQLconnectscott/tiger已连接。SQLselect*fromv$versionBANNER---

Oracle序列的问题?
Oracle序列的问题
(1)
SQL>   connect   scott/tiger
已连接。
SQL>   select   *   from   v$version;

BANNER
-----------------------
Oracle9i   Enterprise   Edition   Release   9.2.0.1.0   -   Production
PL/SQL   Release   9.2.0.1.0   -   Production
CORE         9.2.0.1.0               Production
TNS   for   32-bit   Windows:   Version   9.2.0.1.0   -   Production
NLSRTL   Version   9.2.0.1.0   -   Production

SQL>   select   *   from   tab;   SQL>   select   *   from   user_tables;和SQL>   select   *   from   all_tables;有什么区别和联系?

(2)
SQL>   select   *   from   dept;

        DEPTNO   DNAME                     LOC
----------   --------------   -------------
                10   ACCOUNTING           NEW   YORK
                20   RESEARCH               DALLAS
                30   SALES                     CHICAGO
                40   OPERATIONS           BOSTON

SQL>   create   sequence   sq_dept
                increment   by   10
                start   with   50
                maxvalue   90
                nocache
                nocycle   ;

序列已创建。

SQL>   select   *   from   user_sequences;

SEQUENCE_NAME                                       MIN_VALUE     MAX_VALUE   INCREMENT_BY   C   O   CACHE_SIZE   LAST_NUMBER
------------------------------   ----------   ----------   ------------   -   -   ----------   -----------
SQ_DEPT                                                                   1                   90                       10   N   N                     0                     50

SQL>   select   *   from   dept;

        DEPTNO   DNAME                     LOC
----------   --------------   -------------
                10   ACCOUNTING           NEW   YORK
                20   RESEARCH               DALLAS


                30   SALES                     CHICAGO
                40   OPERATIONS           BOSTON
                50   TRAINING               SHANGHAI

SQL>   select   sq_dept.currval   from   dual;

      CURRVAL
----------
                50

SQL>   select   sq_dept.nextval   from   dual;

      NEXTVAL
----------
                60

SQL>     insert   into   dept   values(sq_dept.nextval, 'SUPPORTING ', 'SHANGHAI ');

已创建   1   行。

SQL>   select   *   from   dept;

        DEPTNO   DNAME                     LOC
----------   --------------   -------------
                10   ACCOUNTING           NEW   YORK
                20   RESEARCH               DALLAS
                30   SALES                     CHICAGO
                40   OPERATIONS           BOSTON
                50   TRAINING               SHANGHAI
                70   SUPPORTING           SHANGHAI

已选择6行。

为什么是“70   SUPPORTING           SHANGHAI”,应该是“60   SUPPORTING           SHANGHAI”?



[解决办法]
大哥,多看看资料,这都是基础中的基础;

因为你
SQL> select sq_dept.nextval from dual;

NEXTVAL
----------
60

SQL> insert into dept values(sq_dept.nextval, 'SUPPORTING ', 'SHANGHAI ');

已创建 1 行。

你的60已经用过一次,
NEXTVAL
----------
60
所以再insert 就变成70了

select * from tab; SQL> select * from user_tables;和SQL> select * from all_tables;有什么区别和联系?

select * from tab: 查询指定表的信息
select * from user_tables: User_tables是一个View,里面包括所有用户表的表名,表空间。。。。
select * from user_tables: 是所有表,包括用户表,系统表等等。。。。



[解决办法]
select * from user_tables 是当前登陆用户所对应的对象信息。

热点排行