--视图 -- 虚表 (逻辑上存在)
--主要目的是为了简化数据的查询,可以将复杂查询的结果放入到
--视图当中,方便日后查询。
--可以对视图进行增删改(很多约束条件),但是不建议这么做
SQL> create view empview
2 as
3 select e.empno,e.ename,e.sal,e.sal*12 annlsal,d.dname
4 from emp e,dept d
5 where e.deptno=d.deptno;
create view empview
*
第 1 行出现错误:
ORA-01031: 权限不足
---管理员执行
--SQK> grant create view to scott
--SQL> sqlplus / as sysdba
SQL> / --再次执行
视图已创建。
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BIN$b9zRUzdaQfuXXqNhykffVA==$0 TABLE
MYPERSON TABLE
TEST2 TABLE
EMPVIEW VIEW
DEPT TABLE
EMP TABLE
已选择12行。
SQL> select * from EMPVIEW;
EMPNO ENAME SAL ANNLSAL DNAME
---------- ---------- ----- ---------- --------------
7369 SMITH 800 9600 RESEARCH
7499 ALLEN 1600 19200 SALES
7521 WARD 1250 15000 SALES
7566 JONES 2975 35700 RESEARCH
SQL> create or replace view empview
2 as
3 select e.empno,e.ename,e.sal,e.sal*12 annlsal,d.dname
4 from emp e,dept d
5 where e.deptno=d.deptno
6 with read only
7 ;
视图已创建。
-----------********序列*******--------
--序列-- > 数组 -- > 内存 (因此可以提高性能)
--cache指定数组的大小,如果nocache 那么就每次生成一条
--就不能提高效率
--cycle 一般我们用序列来当做主键,因此不要求循环,循环就重复了
--nocycle
--序列有两个伪列:nextval , currval
SQL> create sequence myseq;
序列已创建。
--如果什么都不指定,默认increment by 1
--start with 1
--nomaxvalue
--nominvalue
--序列还没开始用的时候,先用nextval ,这样才有currval
SQL> select myseq.nextval from dual;
SQL> select myseq.currval from dual;
CURRVAL NEXTVAL
---------- ---------
1 1
已选择 1 行。
SQL> create table tableA(tid number,tname varchar2(20));
表已创建。
SQL> insert into tableA values(myseq.nextval,'aaa' );
已创建 1 行。
SQL> /
已创建 1 行。
SQL> /
已创建 1 行。
SQL> commit;
提交完成。
SQL> /*
SQL> --序列的不连续
SQL> --1. 序列是公有对象
SQL> --2. 掉电(停电后,在内存缓存中的20个数字就没有了)
SQL> --3. 回滚
SQL> */
SQL> insert into tableA values(myseq.nextval,'aaa' );
已创建 1 行。
SQL> /
已创建 1 行。
SQL> rollback;
回退已完成。
SQL> insert into tableA values(myseq.nextval,'aaa' );
已创建 1 行。
修改序列
alter sequence 序列名
...
...
只会影响将来的值,已经用过的值不会改变
SQL> --索引(原理见下面的图)
SQL> --index
SQL> create index myindex on emp(deptno);
索引已创建。
SQL> --同义词 --> 别名
SQL> select count(*)
2 from hr.EMPLOYEES;
from hr.EMPLOYEES
*
第 2 行出现错误:
ORA-00942: 表或视图不存在
--hr用户给scott授予select employees表的权限
--grant select on employees to scott
SQL> /
COUNT(*)
----------
107
已选择 1 行。
--创建同义词
SQL> create synonym hremp for hr.EMPLOYEES;
create synonym hremp for hr.EMPLOYEES
*
第 1 行出现错误:
ORA-01031: 权限不足
---管理员授予scott创建同义词的权限
--grant create synonym to scott ;
SQL> /
同义词已创建。
SQL> select count(*) from hremp;
COUNT(*)
----------
107
已选择 1 行。
SQL> spool off
Oracle备忘录(十)--序列,索引
最新推荐文章于 2021-12-02 17:48:43 发布