四个对象 续
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;