视图
将常用语句封装在 视图中,类似函数的使用
视图的创建或修改
create [or replace] [force] view view_name
as subquery
[with check option]
[with read only]
--or replace:若所创建的视图已存在,Oracle自动重建该视图
--force:不管基表是否存在,oracle都会自动创建该视图
--subquery:一条完整的select语句,可以在该语句中定义别名
--with check option:插入或修改的数据行必须满足视图定义的约束
--with read only:该视图上不能进行任何dml操作
删除视图语法
drop view view_name
更新视图
--更新视图也会使得表中数据更改
update view_owners1 set name='范小冰' where id=1;
commit;
带检查约束的视图
create view view_address2 as
select * from t_address where areaid='2'
with check option
只读视图
create or replace view view_owners1 as
select * from t_owners where ownertypeid='1'
with read only
创建带错误 force
create view view_address2 as
select * from 不存在的视图
复杂视图的创建与使用
就是在SQL语句中有聚合函数或多表关联查询
键保留表
聚合函数视图
物化视图
物化视图与普通视图相比的区别是物化视图是建立的副本,它类似于一张表,需要占用存储空间,而对一个物化视图查询的执行效率与查询一个表是一样的
创建物化视图
create meterialized view view_name
[build immediate | build deferred]
refresh [fast|complete|force]
[
on [commit | demand ] | start with (start_time) next (next_time)
]
as
subquery
--build immediate 是在创建物化视图的时候就生成数据
--build deferred 则在创建时不生成数据,以后根据需要再生成数据,默认为build immediate
--refresh(刷新):指当基表发生了dml操作后,物化视图合适采用哪种方式和基表进行同步
--fast 为增量刷新,只刷新自上次刷新以后进行的修改,complete 为对整个物化视图进行完全的刷新。如果选择force方式,则Oracle在刷新时回去判断是否可以进行快速刷新,如果可以则采用fast方式,否则采用complete方式,force是默认的方式
--刷新的模式有两种:on demand 和on commit。on demand指需要手动刷新物化视图(默认)。on commit 指在基表发生commit操作时自动刷新。
刷新物化视图
begin
dbms_mview.refresh('视图名称','c');
end;
序列
什么是序列
序列是Oracle提供的用于产生一系列唯一数字的数据库对象
创建与使用简单序列
create sequence 序列名称
--通过序列的伪列来访问序列的值
--nextval返回序列下一个值
--currval返回序列当前值
--提取序列下一个值
select 序列名称.nextval from 表
--提取序列当前值
select 序列名称.currval from 表
创建复杂序列
索引
找东西快,相当于书的目录,提高性能,占据空间,数据多时候用
普通索引
create index 索引名称 on 表名(列名);
PL/SQL
是oracle对sql语言的过程化扩展,就是在sql语句中增加过程处理语句(分支、循环等)。
[declare
--声明变量
]
begin
--代码逻辑
[exception
--异常处理
]end;
触发器
before前置触发器
after 后置触发器
create [or replace] trigger 触发器名
before | after
[delete] [[or] insert] [[or]update [of 列名]
on 表名
[for each row][when(条件) ]
declare
...
begin
plsql块
end;