create [unique] index i_name on t_name(c_list) [tablespace ts_name];
注释: create ... index ... on 创建索引
unique 唯一索引
i_name 创建的索引名称
t_name 在哪个表创建
(c_list) 列名
ts_name 表空间名
举例: create index emp_ename_idx on emp(ename);
:b树索引 create unique index emp_ename_unique_idx on emp(ename);
:唯一索引 create index emp_ename_reverse_idx on emp(ename) reverse;
:反向索引 create index emp_ename_upper_idx on emp(upper(ename));
:函数索引
4、创建索引的原则
1)频繁检索的列
2)经常排序、分组的列
3)主键/外键
4)大型索引使用nologing子句创建
5)需定期进行组织索引、碎片整理
5、维护索引的命令
1)重建索引 alter index i_table rebuild [tablespace ts_name];
2)合并索引碎片 alter index i_name coalesce;
3)删除索引 drop index i_name;
4)查看索引(使用user_indexes、user_ind_columns字典) select index_name,index_tyep,table_name,column_name from user_indexes;或者 select index_name,table_name,_column_name from user_ind_columns where
index_name like ‘emp%’;
三、视图
·视图是一个虚表,不占用物理空间,视图本身的定义语句存放于字典里,可以由一个或者多个表中获得数据。目的是为了方便查询,而不需要在敲繁琐的查询语句。
1、视图的作用
1)通过限制对表中预定的一组行和列进行查看,可以防止用户看到无权限数据,提供了安全性
2)简化了用户的命令、隐藏了数据的复杂性,方便操作
3)视图可以对列进行重命名,提升了数据库的灵活性和人性化
4)视图将应用程序与基表定义的修改进行了隔离,表结构的修改不会影响视图结构。
2、创建视图 create [or replace] [force] view vname [(alias[,alias]...)] as SQL
[with check option] [with read only];
注释: or replace :覆盖
force :强制的;视图中的基表是否存在,都会创建
vname :创建的视图名称
[(alias[,alias]...)] :可选项,视图别名,可以由多个
SQL :SQL查询语句
with check option :用于更改视图时的约束
with read only :只读
举例: create view vname as select from tname where ‘a=b’;
简单的视图 create view vname as select from tname where ‘a=b’ with read only;
只读视图 create force view vname as select from tname where ‘a=b’;
强制创建视图,假如‘tname’表不存在,也强制创建,也就是错误视图。 create table tname (a (char)); alter view vname compile;
查看错误视图(使用字典) show errors view;
show
创建tname表;然后编译错误视图,使其生效
3、在视图中使用DML语句(insert、update、delete)的限制
1)DML语句只能修改视图中的一个基表
2)如果修改违反了check option约束,则无法修改
3)如果视图包括连接运算符、DISTINCT运算符、集合运算符、聚合函数和group by子句,则无法更新视图
4)如果包含伪列、表达式,也无法更新视图
4、维护视图
1)删除视图 drop view vname;
2)查询已有视图(user_views字典) select viewname from user_views;
5、物化视图
·顾名思义,物化视图就是将视图物理化存到磁盘,它与基表实时同步。物化视图可以避免order by子句或者多表连接查询带来的效率降低和时耗,但是会占用用磁盘空间。
1)物化视图同步的刷新方式可分为:
on commit:即提交事务以后
on demand:简单讲就是用户手动刷新
2)物化视图同步的刷新类型
complete:完全刷新
fast:追求速度,增量刷新
force:Oracle自动判断使用complete还是fast类型刷新
never:从不刷新
·关于以上四个类型,Oracle默认选择force刷新。工作中无特殊需求,无需更改
6、创建物化视图
1)首先用sys登陆,为scott用户授权