数据库视图和索引基本知识

一、视图

概念:视图是在基本表之上建立的虚表,它的结构(定义的列)和内容(数据)来源于基本表。

一个视图可以对应一个基本表,也可以对应多个基本表。

1.视图和表的区别

1)视图中没有实际的数据,但是table有。

2)table是内容,视图是窗口。

3)视图可以让用户不接触表,保证安全性。

4)视图是虚表,table是实table。

5)视图的建立和删除只影响视图本身,不影响基本表。

6)视图是一种逻辑结构,表是物理结构。

2.建立视图

1)创建视图需要有create view权限,如果要在其它用户下创建视图,需要有create any view权限。

2)创建视图的语法:

create [or replace] [force] view 视图名 as 查询语句 [with read only];

or replace:如果存在同名的视图,则使用新视图替换已有的视图。

force:强制创建视图,不考虑基本是否存在,也不考虑是否朋使用表的权限。

with read only:用于定义只读视图。

例:登录system用户,给scott用户创建视图的权限

grant create view to scott;

1))创建视图用户查询部门编号为20号的员工的员工编号、员工名字、职务、部门编号。

create view emp_view as select empno,ename,job,deptno from emp where deptno=20;

2))查询视图内容:select * from emp_view;

如果往视图中添加数据,会影响到基本表

3)只读视图:只能用来查询数据,不能用来增删改数据。

create or replace view emp_view as
select empno,ename,job,deptno from emp 
where deptno = 20 with read only; --创建只读视图替换原来的视图

select * from emp_view;
insert into emp_view values(4397,'王五','CLERK',20);--失败,只读视图只能查询

4)使用force关键字强制创建基本表不存在的视图。

create force view test_view as select * from test;

3.管理视图

1)查询视图结构:desc 视图名;

注:需要在命令窗口执行;

desc emp_view;

2)创建视图后,如果用户修改了视图所依赖的基本表的定义,视图就会被标记为无效状态,当用户用户再次访问视图时,数据库会自动重新编译视图。

3)删除视图:drop view 视图名;

二、创建索引

1)B树索引

B树索引是最常用的索引类型,也是默认使用的索引,底层使用B树结构组织并存放索引数据。

创建B树索引语法:create index emp_deptno_index on emp(deptno);

例:create index emp_deptno_index on emp(deptno);

2)位图索引

当列中值的基数很低时,建立B树索引显然不合适,此时则可以建立位图索引。

当值的数量/总行数<1%时,则建立位图索引。
建立位图索引语法:create bitmap index 索引名 on 表名(列名);

3)  反向键索引
如果列中的值是单调递增的序列,为了降低索引争用的情况,则可以使用反向键索引。
反向键索引的存储结构和B树索引相同,但是,使用反向键索引时,它会把每一个索引列的值反转,
如果2019,反转之后就是9102.这样就使得新数据在值的范围上分布更加均匀。

创建反向键的语法:
create index 索引名 on 表名(列名) reverse;

4)  函数索引:可以给索引列加上函数,如果存放的数据是由表中的数据应用函数之后得到的,而不是
直接存放在表中的数据本身,此时就可以使用函数索引。
例:
create index emp_job_index on emp(upper(job));

三、修改索引
1)  重建索引
语法:alter index 索引名 rebuild;
2)  合并索引
语法:alter index 索引名 coalesce deallocate unused;

四、删除索引
drop index 索引名;
drop index emp_deptno_index;


五、查询索引信息
在system模式下的数据字典中,dba_indexes中存放所有用户的索引信息
select * from dba_indexes where owner = 'SCOTT';

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值