Oracle其他数据对象

1 视图

1.1 什么是视图

视图相当于一个虚拟表,通过对单个或多个表的查询进行创建。但是视图并不存储此时查询出的结果,而是相当于储存进行查询的语句,当基表的数据更新时,则视图也会相应的更新。
对视图进行增删改的操作,该该操作也会相应的修改其创建时基于的表(基表)的内容.但无法通过联接视图修改多个基表

1.2 对视图的操作

  • 创建视图
  • 一个基表
create view <view_name>
as
select [<字段1>,<字段2>,...,<字段n>] from <base_table_name> [where <expr>]
  • 多个基表
create view <view_name>
as
select [<字段1>,<字段2>,...,<字段n>] from <expr>#参考多表查询
  • 限制对视图只能读,不能写
    在创建视图的语句后加上with read only
    如:
create view view_emp
as
select e.ename,e.job,e.empno from scott.emp e 
with read only;
  • 对视图加约束
  • 创建视图时使用的where条件作为约束,并为之创建一个约束名
  • 在最后一句加上with check option constraint <constraint_name>
  • 约束=约束的是修改和添加的操作。

例:无约束

create view view_no_constraint
as
select e.empno,e.ename,comm from scott.emp e where comm is not null;

例:有约束

create view view_with_constraint
as
select e.empno,e.ename,comm from scott.emp e where comm is not null
with check option constraint view_constraint;
  • 删除视图
drop view <view_name>;
  • 替换视图
create or replace view <view_name>
as
<select_expr>;

2 序列

2.1 什么是序列

序列顾名思义就是一个序号。可以用来自动产生序号,并且有一些参数可以设置,如:增长速度、起始值、最大值、最小值、是否循环、是否缓存

2.2 序列的用途

可以用在表中一些需要用到序号的地方

2.3 对序列的操作

  • 创建序列
create sequence <sequence_name>
[increment by <步长>|
start with <起始值>|
maxvalue <最大值>|
minvalue <最小值>|
cycle|nocycle 是否循环|
cache|nocache 是否缓存]
;
  • 删除序列
drop sequence <sequence_name>;
  • 序列的使用
  • 序列的当前值
<sequence_name>.currval
  • 序列的下一个值
<sequence_name>.nextval

3 索引

3.1什么是索引

如果一个数据表中存有海量的数据记录,当对表执行指定条件的查询时。常规的查询方法会将所有的记录都读取出来,然后再把读取的每一条记录与查询条件进行对比,最后返回满足条件的记录。这样进行操作的时间开销和I/O开销都很大。对于这种情况,就可以考虑通过建立索引来减小系统开销。
如果要在表中查询指定的记录,在没有索引的情况下,必须遍历整个表,而有了索引之后,只需要在索引中找到符合查询条件的索引字段值,就可以通过保存在索引中的ROWID快速找到表中对应的记录。例如,如果将表看做一本书,索引的作用类似于书中的目录。在没有目录的情况下,要在书中查找指定的内容必须阅读全文,而有了目录之后,只需要通过目录就可以快速找到包含所需内容的页码(相当于ROWID)。

建立和规划索引时。必须选择合适的表和列,如果选择的表和列不合适,不仅无法提高查询速度,反而会极大地降低DML操作的速度,所以建立索引必须注意以下几点:
1.索引应该建立在WHERE子句频繁引用列表上,如果在大表上频繁使用某列或某几个列作为条件执行索引操作,那么应该考虑在这些列上建立索引。
2.如果经常需要基于某列或者某几个列排序操作,那么应该在这些列上建立索引可以加快数据排序速度。
3.限制表的索引个数。索引主要用于加快查询速度,但会降低DML操作的速度。索引越多,DML操作速度越慢,尤其会极大地影响INSERT和DELETE操作的速度。因此,规划索引时,必须仔细权衡查询和DML的需求。


摘自:跑不完的操场
链接:https://www.jianshu.com/p/ebf56728e087

3.2对索引的操作

  • 创建索引
create [unique] index <index_name> on <table_name>(<col_name1>[,<col_name2>,...,<col_namen>);
  • 删除索引
drop index <index_name>;

4 同义词

4.1什么是同义词

同义词相当于对表的映射即为表起一个别名

  • 公有同义词(public synonym)
    所有的用户都可以访问的到
  • 私有同义词(synonym)
    仅有创建私有同义词的当前同义词可以访问

4.2对同义词的操作

  • 授予创建同义词的权限给用户
grant create synonym to <user_name>;
  • 创建公有同义词
create public synonym <synonym_name> for <table_name>;
  • 创建私有同义词
create synonym <synonym_name> for <table_name>;
  • 删除同义词
drop synonym <synonym_name>;

参考资料:索引:https://www.jianshu.com/p/ebf56728e087
原文:http://blog.isdevil.com/cjerrybird/2019/03/oracle%e5%85%b6%e4%bb%96%e6%95%b0%e6%8d%ae%e5%af%b9%e8%b1%a1.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值