Oracle—视图、序列、索引、同义词

帅比萌擦擦* 提交于 2019-12-11 06:02:36

视图

创建简单视图

创建一个包含员工号、员工名、工资和部门号的员工基本信息视图

create or replace view emp_base_info_view
as
select empno,ename,sal,deptno from emp;

创建一个查询部门编号为20的视图:

SQL>connect scott/1qaz2wsx
已连接
SQL>create or replace view emp_view as
select empno.enmae,job,deptno
from emp
where deptno=20;

创建一个包含工资大于2000的员工信息的视图 :(复杂视图、只读)

create view  emp_sal_view 
as
select empno,ename,sal*12 salary from emp
where sal>2000  with check option;

修改视图

可以采用create or replace view 语句修改视图,实质是删除原视图并重建该视图,但是会保留该视图上授予的各种权限

修改视图create view emp_dept_view,添加员工工资信息:

create or replace view  emp_dept_view
as
select T empno,ename,sal,dname 
from emp,dept where emp.deptno=dept.deptno;

删除视图

drop view view_name;

序列

  1. 序列用于产生惟一序号的数据库对象,用于为多个数据库用户依次生成不重复的连续整数。
  2. 通常使用序列自动生成表中的主键值。
  3. 序列产生的数字最大长度可达到38位十进制数。
  4. 序列不占用实际的存储空间,在数据字典中只存储序列的定义描述。

创建序列

CREATE SEQUENCE sequence
[INCREMENT BY n]   
[START WITH n]    
[MAXVALUE n | NOMAXVALUE]  
[MINVALUE n | NOMINVALUE]  
[CYCLE | NOCYCLE]         
[CACHE n | NOCACHE];
//参数说明
INCREMENT BY:设置相邻两个元素之间的差值,即步长,默认值为1START WITH:设置序列初始值,默认值为1;
MAXVALUE:设置序列最大值
NO MAXVALUE:设置默认情况下,递增序列的最大值为1027,递减序列的最大值为-1; 
MINVALUE:设置序列最小值;
NOMINVALUE:设置默认情况下,递增序列的最小值为1, 递减序列的最小值为-1026CYCLE|NOCYCLE:指定当序列达到其最大值或最小值后,是否循环生成值,NOCYCLE 是默认选项; 
CACHE|NOCACHE:设置是否在缓存中预先分配一定数量的数据值,以提高获取序列值的速度,默认为缓存20个值。

实列:

create sequence stud_sequence
increment by 1 start with 100
maxvalue 99999
start with 9000
increment by 100
cache 50;

使用序列:

在scott用户模式下,使用序列empno列会使用序列empno_seq为emp表的新纪录提供员工编号:

insert into emp(empno,enmae,deptno)
value(empno_seq.nextval,'东方',20);

查询当前序列号:

select empno_seq_currval from dual;

CURRVAL 
---------
9000

修改序列

alter SEQUENCE stud_sequence 
INCREMENT by 10  
MAXVALUE 10000  cycle  CACHE 20; 

同义词

同义词概述:

同义词是数据库中表、索引、视图或其他模式对象的一个别名。利用同义词,一方面为数据库对象提供一定的安全性保证,例如可以隐藏对象的实际名称和所有者信息,或隐藏分布式数据库中远程对象的位置信息;另一个方面是简化对象访问。此外,当数据库对象改变时,只需要修改同义词而不需要修改应用程序。

同义词分为私有同义词和公有同义词两种。私有同义词只能被创建它的用户所拥有,该用户可以控制其他用户是否有权使用该同义词;公有同义词被用户组PUBLIC拥有,数据库所有用户都可以使用公有同义词。

创建同义词:
语法

CREATE [PUBLIC] SYNONYM synonym_name  
FOR object_name;

示例

CREATE PUBLIC SYNONYM scottemp FOR scott.emp;

利用同义词可以实现对数据库对象的操作

UPDATE scottemp SET ename='SFD'
WHERE empno=7884; 

索引

概念:
索引是为了加速对表中元组(记录)的检索而创建的一种分散存储结构;
是对表而建立的,由除存放表的数据页面以外的索引页面组成,独立于被索引的表(可以拥有它自己的存储空间);

索引使用原则:
在这里插入图片描述创建索引:
在这里插入图片描述创建非惟一性索引到employee表的ename列:

SQL> CREATE INDEX employee_ename ON employee(ename)
     TABLESPACE users 
     STORAGE (INITIAL 20K NEXT 20k PCTINCREASE 75); 

创建惟一性索引到department表的dname列:

SQL> CREATE UNIQUE INDEX deptartment_index
     ON department(dname); 

创建位图索引到student表的sex列:

`SQL> CREATE BITMAP INDEX student_sex ON student(sex`);

创建反序索引到player表的sage列:

SQL> CREATE INDEX player_sage ON player(sage) REVERSE; 

定义约束时创建索引:

SQL> CREATE TABLE new_employee(
     empno NUMBER(5) PRIMARY KEY
           USING INDEX TABLESPACE users PCTFREE 0,
     ename VARCHAR2(20)
     ); 

索引重命名:

SQL> ALTER INDEX employee_ename RENAME
     TO employee_new_ename;

删除索引:

drop index index_name;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!