oracle视图和索引,oracle视图和索引

视图和索引

视图

视图的作用

控制数据访问、简化查询、避免重复访问相同的数据

视图的优点

限制用户只能通过视图检索数据,用户看不到底层基表

注意事项

视图可以理解为临时表,会随着真实表的数据变化而自动变化

视图的名字以V_开头,表明是视图;

视图不提高任何效率

视图不占用空间

不是所有的视图都能更改(若改动能对应的原来的表,则可以,否则不可以,比如用了聚合函数的,或者group by而来的)

简单视图

语法

create or replace view 视图名 as select 语句;

create or replace:关键字,创建或者替换(若原来没有,则创建,若已经有,则替换原来的)

范例

SQL> create or replace view v_emp as

2 select empno, ename, job from emp;

视图已创建。

SQL> select * from v_emp;

EMPNO ENAME JOB

---------- -------------------- ------------------

7777 S_HH%GGH CLERK

7369 SMITH CLERK

7499 ALLEN SALESMAN

...

只读视图

语法

create or replace view 视图名

as select 语句

with read only;

范例

SQL> create or replace view v_emp2 as

2 select empno,ename,job from emp

3 with read only;

视图已创建。

SQL> delete from v_emp2;

delete from v_emp2

*

第 1 行出现错误:

ORA-42399: 无法对只读视图执行 DML 操作

视图管理

查看

查看指定用户下的所有视图

SQL> select view_name from dba_views where owner='SCOTT';

VIEW_NAME

------------------------------------------------------------

V_DEPT

V_DEPT_EMP

V_EMP

V_EMP2

dba_views查看数据库下所有视图

owner='SCOTT'指定用户

view_name显示视图的名称

删除

SQL> drop view v_emp;

视图已删除。

SQL> drop view v_emp2;

视图已删除。

SQL> select view_name from dba_views where owner='SCOTT';

VIEW_NAME

------------------------------------------------------------

V_DEPT

V_DEPT_EMP

索引

索引的作用

提高查询效率

索引的注意事项

限制索引的个数。索引只要提升查询速度,但会降低 DML 操作的速度

索引名字唯一,长度不超过32位

索引列可以不止一列(组合索引或者复合索引),但唯一性高的在第一位(即重复数据少)

给表初始化时,须先将索引drop或者unusable(先插入数据,后建索引)

索引名称以IND或者IDX开头;

普通索引

语法

create index 索引名 on 表名(列名);

范例

SQL> create index IND_emp_deptno on emp(deptno);

索引已创建。

唯一索引

语法

create unique index 索引名字 on 表名(列名);

范例

SQL> create unique index ind_indtest_id on ind_test(id);

索引已创建。

管理索引

查看

SQL> select index_name from user_ind_columns where table_name='EMP';

INDEX_NAME

------------------------------------------------------------

UNIQUE_EMP_ENAME

PK_EMP

SQL> select index_name from user_ind_columns where table_name='IND_TEST';

INDEX_NAME

------------------------------------------------------------

IND_INDTEST_ID

删除索引

SQL> drop index IND_emp_deptno;

索引已删除。

SQL> drop index IND_INDTEST_ID;

索引已删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值