视图相当于一个虚拟表,通过对单个或多个表的查询进行创建。但是视图并不存储此时查询出的结果,而是相当于储存进行查询的语句,当基表的数据更新时,则视图也会相应的更新。
对视图进行增删改的操作,该该操作也会相应的修改其创建时基于的表(基表)的内容.但无法通过联接视图修改多个基表
create view
as
select [<字段1>,<字段2>,...,<字段n>] from [where ]
create view
as
select [<字段1>,<字段2>,...,<字段n>] from #参考多表查询
with read only
create view view_emp
as
select e.ename,e.job,e.empno from scott.emp e
with read only;
约束名
。with check option constraint
例:无约束
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 ;
create or replace view
as
;
序列顾名思义就是一个序号。可以用来自动产生序号,并且有一些参数可以设置,如:增长速度、起始值、最大值、最小值、是否循环、是否缓存
可以用在表中一些需要用到序号的地方
create sequence
[increment by <步长>|
start with <起始值>|
maxvalue <最大值>|
minvalue <最小值>|
cycle|nocycle 是否循环|
cache|nocache 是否缓存]
;
drop sequence ;
.currval
.nextval
如果一个数据表中存有海量的数据记录,当对表执行指定条件的查询时。常规的查询方法会将所有的记录都读取出来,然后再把读取的每一条记录与查询条件进行对比,最后返回满足条件的记录。这样进行操作的时间开销和I/O开销都很大。对于这种情况,就可以考虑通过建立索引来减小系统开销。
如果要在表中查询指定的记录,在没有索引的情况下,必须遍历整个表,而有了索引之后,只需要在索引中找到符合查询条件的索引字段值,就可以通过保存在索引中的ROWID快速找到表中对应的记录。例如,如果将表看做一本书,索引的作用类似于书中的目录。在没有目录的情况下,要在书中查找指定的内容必须阅读全文,而有了目录之后,只需要通过目录就可以快速找到包含所需内容的页码(相当于ROWID)。
建立和规划索引时。必须选择合适的表和列,如果选择的表和列不合适,不仅无法提高查询速度,反而会极大地降低DML操作的速度,所以建立索引必须注意以下几点:
1.索引应该建立在WHERE子句频繁引用列表上,如果在大表上频繁使用某列或某几个列作为条件执行索引操作,那么应该考虑在这些列上建立索引。
2.如果经常需要基于某列或者某几个列排序操作,那么应该在这些列上建立索引可以加快数据排序速度。
3.限制表的索引个数。索引主要用于加快查询速度,但会降低DML操作的速度。索引越多,DML操作速度越慢,尤其会极大地影响INSERT和DELETE操作的速度。因此,规划索引时,必须仔细权衡查询和DML的需求。
摘自:跑不完的操场
链接:https://www.jianshu.com/p/ebf56728e087
create [unique] index on ([,,...,);
drop index ;
同义词相当于对表的映射即为表起一个别名
grant create synonym to ;
create public synonym for ;
create synonym for ;
drop synonym ;
参考资料:索引: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