【Oracle11gR2 | 学习】视图、索引

学习资料来源于:【Oracle】黑马57期Oracle数据库基础教程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

视图是什么?

它能够提供一个查询窗口,所有数据来自于原表。

视图的作用是什么?

  1. 视图可以屏蔽掉一些敏感字段,如工资
  2. 保证总部和分部数据及时统一

如何创建视图:

创建视图必须要有dba权限。

【代码展示】:

--查询语句创建表
create table emp as select * from scott.emp;--可以跨用户查询
select * from emp;
--创建视图
create view v_emp as select ename,job from emp;
--查询视图,和查询表是一样的
select * from v_emp;
--修改视图(不推荐,因此一般公司会创建只读视图)
update v_emp set job='CLERK' where ename='ALLEN';--表的数据也改变了,改视图其实就是改原表
commit;
--创建只读视图
create view v_emp1 as select ename,job from emp with read only;
update v_emp1 set job='CLERK' where ename='ALLEN';--已经不可修改
commit;

索引是什么?

它是在表的列上构建一个二叉树(相当于一本书的目录),达到大幅度提高查询效率的目的,

但是索引会影响增删改的效率(因为每一次修改都会改变目录,导致效率下降)。

分为单列索引和复合索引,

单列索引:构建在一个列上

复合索引:构建在多个列上

对于索引,先记住它的概念以及规则,若之后项目中用到再深入学习。

【代码展示】:

--创建单列索引
create index idx_ename on emp(ename);
--单列索引的触发规则,条件必须是索引列中的原始值
--所以说,单行函数、模糊查询等都会影响索引的触发
select * from emp where ename='SCOTT';
--创建复合索引
create index idx_enamejob on emp(ename,job);
--复合索引中第一列为优先检索列
--要触发复合索引,必须包含有优先检索列中的原始值
select * from emp where ename='SCOTT' and job='xx';
select * from emp where ename='SCOTT';--既有单列索引又有复合索引时,触发单列索引。
select * from emp where ename='SCOTT' or job='xx';--不触发索引

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值