查看oracle数据库对象,Oracle数据库对象

数据库对象简介

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

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

31b4445754be

序列

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

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

序列创建

SQL> CREATE SEQUENCE toys_seq

START WITH 10 -- 指定起始值

INCREMENT BY 10

MAXVALUE 2000

MINVALUE 10

NOCYCLE

CACHE 10; -- 内存中预先分配的序号数

SQL> CREATE SEQUENCE seqa START WITH 1000 INCREMENT BY 2;

序列操作

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

NEXTVAL 返回序列的下一个值

CURRVAL 返回序列的当前值

SQL> SELECT seqa.CURRVAL FROM dual;

更改序列

注意:不能修改序列的start with 数值

SQL> ALTER SEQUENCE seqa MAXVALUE 5000 CYCLE;

删除序列

SQL> DROP SEQUENCE seqa;

同义词

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

简化SQL语句

隐藏对象的名称和所有者,开发者可以不考虑具体对象名

提供对对象的公共访问,提高安全性

同义词共有两种类型:

公有同义词可被所有的数据库用户访问。

私有同义词只能在其模式内访问,且不能与当前模式的对象同名。

同义词操作

创建同义词

只有DBA用户才能建立同义词

SQL> CREATE SYNONYM myemp FOR scott.emp;

SQL> CREATE PUBLIC SYNONYM myemp2 FOR scott.emp;

访问同义词

私有同义词无论授权与否一般(除DBA之外)只能当前用户模式访问

公共同义词只有得到同义词所对应对象的select授权才能访问

SQL> GRANT SELECT ON myemp(同义词) TO xm(用户名);

SQL> SELECT * FROM myemp;

修改同义词

SQL> CREATE OR REPLACE SYNONYM myemp FOR SCOTT.dept;

删除同义词

SQL> DROP SYNONYM myemp;

SQL> DROP PUBLIC SYNONYM myemp2;

视图

视图以经过定制的方式显示来自一个或多个表的数据,可以视为“虚拟表”或“存储的查询”

视图本身不存储数据

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

视图的优点有:

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

隐藏数据的复杂性

简化用户查询SQL

隔离基表结构的改变

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

创建视图

31b4445754be

创建视图的语法:

CREATE  [OR REPLACE] [FORCE]  VIEW

view_name [(alias[, alias]...)]

AS select_statement

[WITH CHECK OPTION]--检查视图

[WITH READ ONLY];--只读视图

CREATE VIEW v_emp AS

SELECT empno,ename,job FROM emp

WHERE deptno=10

[WITH CHECK OPTION CONSTRAINT chk_pv]

[with read only];

删除视图:drop view

创建简单的视图

CREATE VIEW myview AS

SELECT * FROM emp WHERE job='MANAGER';

创建带有聚合函数的视图

CREATE VIEW myviewa AS SELECT deptno,sum(sal) totsal FROM emp GROUP BY deptno;

创建从多张表连接形成的视图

CREATE VIEW myviewb AS SELECT ename,job,dname,loc FROM  emp e,dept d WHERE e.deptno=d.deptno;

注意:

--创建视图权限

grant create  view to scott;

--授予查询权限

grant select any table to scott;

--授予权限

grant select any dictionary to scott;

视图上的DML语句

在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE

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

只能修改一个底层的基表

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

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

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

视图更改

UPDATE myview SET sal=sal+20;--成功

UPDATE myviewa SET totsal=10000 WHERE  deptno=10;聚合函数

UPDATE myviewb SET job=‘MANAGER’ WHERE ename=‘SMITH’;

SQL> INSERT INTO myview(empno,ename,job,deptno) VALUES(2222,'rose','CLERK',10);

SQL>SELECT * FROM myview;

SQL>--为什么插入数据看不到?--实际已添加至基表,但被职位限制不显示了

SQL> DROP VIEW myview

SQL>CREATE VIEW myview AS SELECT * FROM emp WHERE job=‘MANAGER’ with check option;--再次添加会报错,因为已限制只能添加'manager'

索引

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

用以提高 SQL 语句执行的性能

减少磁盘I/O

使用 CREATE INDEX 语句创建索引

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

Oracle 自动维护索引

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

31b4445754be

索引管理

索引创建

通过主键、唯一约束等自动建立

手动创建

CREATE INDEX index_emp ON emp(hiredate)

SELECT* FROM emp WHERE hiredate>to_date(‘19810101’,’yyyymmdd’)

重建索引

ALTER INDEX index_emp REBUILD;

删除索引

DROP INDEX index_emp ;

索引一览

唯一索引

Oracle 自动在表的主键列上创建唯一索引

CREATE UNIQUE INDEX

组合索引

是在表的多个列上创建的索引

反向键索引

通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上

创建索引时使用REVERSE关键字,基于B树优化

位图索引

通常建立低基数列上,列值相对固定

CREATE BITMAP INDEX

本章小结

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

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

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

索引是与表相关的一个可选结构,用于提高 SQL 语句执行的性能。索引类型有标准索引、唯一索引、反向键索引、位图索引和基于函数的索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值