2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Oracle数据库对象 同义词 序列 视图 索引

Oracle数据库对象 同义词 序列 视图 索引

时间:2018-08-05 07:27:45

相关推荐

Oracle数据库对象 同义词 序列 视图 索引

数据库对象简介

Oracle 数据库对象又称模式对象

数据库对象是逻辑结构的集合,最基本的数据库对象是表

其他数据库对象包括:

同义词是现有对象的一个别名。

简化SQL语句

隐藏对象的名称和所有者

提供对对象的公共访问

同义词共有两种类型:

CREATE USER test IDENTIFIED BY test;GRANT CONNECT , CREATE SYNONYM TO test;GRANT SELECT ON SCOTT.EMP TO test;GRANT DELETE ON SCOTT.EMP TO test;GRANT UPDATE ON SCOTT.EMP TO test;

CREATE SYNONYM staff FOR SCOTT.emp;

CREATE PUBLIC SYNONYM pub_emp FOR SCOTT.emp;

CREATE OR REPLACE PUBLIC SYNONYM pub_emp FOR SCOTT.emp;

DROP SYNONYM staff; DROP PUBLIC SYNONYM pub_emp;

序列

序列是用于生成唯一、连续序号的对象

序列可以是升序的,也可以是降序的

使用CREATE SEQUENCE语句创建序列

依次为:

序列案例

create table t_testseq(id number primary key,name varchar2(10) NOT NULL );

create sequence seq_valueStart with 1Increment by 1;

访问序列

通过序列的伪列来访问序列的值

NEXTVAL 返回序列的下一个值

CURRVAL 返回序列的当前值

INSERT INTO t_testseq VALUES (seq_value.NEXTVAL, 'tom')INSERT INTO t_testseqVALUES (seq_value.NEXTVAL, 'jime');

SELECT seq_value.CURRVAL FROM dual;

更改和删除序列

ALTER SEQUENCE SEQ_VALUE MAXVALUE 5000 CYCLE;

DROP SEQUENCE SEQ_VALUE;

视图

select dept.deptno,dname,loc,empno,ename,job,mgr,hiredatefrom emp,deptwhere emp.deptno = dept.deptno and dname= ‘ SALES ‘;

--查看当前用户的系统权限select * from user_sys_privs;--查看当前用户角色权限select * from user_role_privs;--查看某个角色权限select * from role_sys_privs where role =‘RESOURCE’;--创建视图create view dept_empasselect dept.deptno,dname,loc,empno,ename,job,mgr,hiredatefrom emp,deptwhere emp.deptno = dept.deptno;

select * from dept_emp where dname= ‘ SALES ‘;

视图以经过定制的方式显示来自一个或多个表的数据

视图可以视为“虚拟表”或“存储的查询”

创建视图所依据的表称为“基表”

视图的优点有:

提供了另外一种级别的表安全性

隐藏的数据的复杂性

简化的用户的SQL命令

隔离基表结构的改变

通过重命名列,从另一个角度提供数据

create view dept_emp_orderasselect dept.deptno,dname,loc,empno,ename,job,mgr,hiredatefrom emp,deptwhere emp.deptno = dept.deptno order by dept.deptno;

create view dept_sal_avgasselect dname,avg(sal) avg_salfrom dept,empwhere dept.deptno = emp.deptno group by dname;

视图上的DML语句

在视图上也可以使用修改数据的DML语句,如

INSERT、UPDATE和DELETE

视图上的DML语句有如下限制:

只能修改一个底层的基表

如果修改违反了基表的约束条件,则无法更新视图

如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图

如果视图包含伪列或表达式,则将无法更新视图

update dept_empset ename = 'TOM'WHERE empno = 7521;

Select ename from dept_emp where empno = 7521

Select ename from emp where empno = 7521

CREATE OR REPLACE [FORCE] VIEW view_name [(alias[, alias]...)] AS select_statement[WITH CHECK OPTION][WITH READ ONLY];

DROP VIEW view_name;

索引概念

索引是与表相关的一个可选结构

用以提高 SQL 语句执行的性能减少磁盘I/O

在逻辑上和物理上都独立于表的数据

Oracle 自动维护索引

索引有各种类型,除了标准索引外,还有一些特殊类型的索引:

唯一索引

组合索引

反向键索引

位图索引

管理索引

CREATE INDEX 索引名 ON 表名 (索引字段)

CREATE INDEX idx_ename ON emp (ename)

ALTER INDEX 索引名 REBUILD [REVERSE][NOREVERSE] ;

ALTER INDEX idx_ename REBUILD;

DROP INDEX 索引名;

DROP INDEX idx_ename;

测试索引

create table t_testseq(id number,name varchar2(10));

create sequence seq_valuestart with 1increment by 1;

BEGINFOR v_temp in 1..1000000 LOOPINSERT INTO t_testseqvalues(seq_value.nextval,’abcde’);END LOOP;END;

Set timing on;--sqlplus环境下设置

--常规查询Select * from t_testseq where id = 28900;--创建索引,再查询Create index idx_testseq_id on t_testseq(id);

Select * from t_testseq where id = 28900;

总结

同义词是现有数据库对象的别名

序列用于生成唯一、连续的序号

视图是基于一个或多个表的虚拟表

索引是与表相关的一个可选结构,用于提高 SQL 语句执行的性能

索引类型有标准索引、唯一索引、反向键索引、位图索引

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。