学习资料来源于:【Oracle】黑马57期Oracle数据库基础教程_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
视图是什么?
它能够提供一个查询窗口,所有数据来自于原表。
视图的作用是什么?
- 视图可以屏蔽掉一些敏感字段,如工资
- 保证总部和分部数据及时统一
如何创建视图:
创建视图必须要有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';--不触发索引