四个对象 续

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;

posted @ 2016-03-23 20:20  岁月刀歌  阅读(130)  评论(0)    收藏  举报