四个对象 续
SQL> -- 索引如何实现 -- B树索引和位图索引(矩阵)
SQL> -- 序列
SQL> -- sequence 主要用来做主键的自增长
SQL> -- 创建一个序列
SQL> create sequence myseq;
序列已创建。
SQL> -- 如何使用序列 nextval,currentval
SQL> desc sequence;
ERROR:
ORA-04043: 对象 sequence 不存在 
SQL> select myseq.currentval from dual;
select myseq.currentval from dual
       *
第 1 行出现错误: 
ORA-00904: "MYSEQ"."CURRENTVAL": 标识符无效 
SQL> select myseq.curval from dual;
select myseq.curval from dual
       *
第 1 行出现错误: 
ORA-00904: "MYSEQ"."CURVAL": 标识符无效 
SQL> select myseq.nextval from dual;
   NEXTVAL                                                                      
----------                                                                      
         1                                                                      
SQL> select myseq.currentval from dual;
select myseq.currentval from dual
       *
第 1 行出现错误: 
ORA-00904: "MYSEQ"."CURRENTVAL": 标识符无效 
SQL> select myseq.currval from dual;
   CURRVAL                                                                      
----------                                                                      
         1                                                                      
SQL> desc testemp10;
ERROR:
ORA-04043: 对象 testemp10 不存在 
SQL> create table testemp10
  2  as
  3  select empno,ename
  4  from emp where 1 = 2;
表已创建。
SQL> desc testemp10;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 EMPNO                                              NUMBER(4)
 ENAME                                              VARCHAR2(10)
SQL> desc emp;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)
SQL> insert into testemp10 values(1,'sz');
已创建 1 行。
SQL> select * from testemp10;
     EMPNO ENAME                                                                
---------- --------------------                                                 
         1 sz                                                                   
SQL> insert into testemp10 values(myseq.nextval,'cc');
已创建 1 行。
SQL> select * from testemp10;
     EMPNO ENAME                                                                
---------- --------------------                                                 
         1 sz                                                                   
         2 cc                                                                   
SQL> insert into testemp10 values(myseq.nextval,'cc');
已创建 1 行。
SQL> insert into testemp10 values(myseq.nextval,'cc');
已创建 1 行。
SQL> insert into testemp10 values(myseq.nextval,'cc');
已创建 1 行。
SQL> insert into testemp10 values(myseq.nextval,'cc');
已创建 1 行。
SQL> select * from testemp10;
     EMPNO ENAME                                                                
---------- --------------------                                                 
         1 sz                                                                   
         2 cc                                                                   
         3 cc                                                                   
         4 cc                                                                   
         5 cc                                                                   
         6 cc                                                                   
已选择6行。
SQL> drop table testemp10;
表已删除。
SQL> -- 删除序列
SQL> drop sequence myseq;
序列已删除。
SQL> -- 我想创建一个序列从100开始
SQL> create sequence myseq start with 100;
序列已创建。
SQL> select myseq.nextval from dual;
   NEXTVAL                                                                      
----------                                                                      
       100                                                                      
SQL> /
   NEXTVAL                                                                      
----------                                                                      
       101                                                                      
SQL> /
   NEXTVAL                                                                      
----------                                                                      
       102                                                                      
SQL> drop sequence myseq;
序列已删除。
SQL> -- 创建一个序列从100开始,然后每次增加5
SQL> create sequence myseq
  2  start with 100
  3  step by 5;
step by 5
*
第 3 行出现错误: 
ORA-00933: SQL 命令未正确结束 
SQL> create sequence myseq
  2  start with 100
  3  step with 5;
step with 5
*
第 3 行出现错误: 
ORA-00933: SQL 命令未正确结束 
SQL> create sequence myseq
  2  start with 100
  3  step  5;
step  5
*
第 3 行出现错误: 
ORA-00933: SQL 命令未正确结束 
SQL> create sequence myseq
  2  start with 100
  3  step on 5;
step on 5
*
第 3 行出现错误: 
ORA-00933: SQL 命令未正确结束 
SQL> create sequence myseq
  2  start with 100
  3  increment by 5;
序列已创建。
SQL> select myseq.nextval from dual;
   NEXTVAL                                                                      
----------                                                                      
       100                                                                      
SQL> /
   NEXTVAL                                                                      
----------                                                                      
       105                                                                      
SQL> /
   NEXTVAL                                                                      
----------                                                                      
       110                                                                      
SQL> /
   NEXTVAL                                                                      
----------                                                                      
       115                                                                      
SQL> -- 同义词
SQL> -- synonym: oracle中表的别名
SQL> -- 主要在什么地方用: 主要用来给其他用户下的表添加别名
SQL> spool off;
                    
                

                
            
        
浙公网安备 33010602011771号