正文
视图
创建简单视图
创建一个包含员工号、员工名、工资和部门号的员工基本信息视图
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;
序列
-
序列用于产生惟一序号的数据库对象,用于为多个数据库用户依次生成不重复的连续整数。
-
通常使用序列自动生成表中的主键值。
-
序列产生的数字最大长度可达到38位十进制数。
-
序列不占用实际的存储空间,在数据字典中只存储序列的定义描述。
创建序列
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[MAXVALUE n | NOMAXVALUE]
[MINVALUE n | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
INCREMENT BY:设置相邻两个元素之间的差值,即步长,默认值为1;
START WITH:设置序列初始值,默认值为1;
MAXVALUE:设置序列最大值
NO MAXVALUE:设置默认情况下,递增序列的最大值为1027,递减序列的最大值为-1;
MINVALUE:设置序列最小值;
NOMINVALUE:设置默认情况下,递增序列的最小值为1, 递减序列的最小值为-1026;
CYCLE|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;