oracle的视图:view 一个或者多个表查询的结果,这个结果就是一个虚拟的表,每次运行视图,都会重新运行视图中的那个查询语句
create view 视图名 as
select 语句
with read only;
视图的作用:
- 将一个复杂的select语句,放入到一个视图里面,简化日常的操作
- 可以隐藏一部分原表的列,简化别人在操作表的时候的业务逻辑
- 可以添加with read only,增加表的安全性
- 视图可以节省网络流量
视图的缺点:
对拥有复杂逻辑的视图,再次表连接等操作,会导致语句更加复杂,运行效率很慢。
oracle的物化视图:是一个真实的物理的表格,将一个或多个表格查询的结果,当成一个新的表格来保存,物化视图的表格,会对原表的数据进行同步,物化视图的表格,本身就是不能更改的
物化视图也叫做 快照表。
create materialized view 物化视图名字
refresh on commit | demand
start with 时间点 next 下一次更新的时间点
as
select 语句;
on commit:类似于实时更新,原表提交数据时更新
create materialized view stu_nan
refresh on commit
as
select * from student where ssex=‘男’ and sage>20;
on demand:定时更新
create materialized view stu_nv_20
refresh on demand
start with sysdate
next to_date(to_char(sysdate+1,‘yyyy-mm-dd’)||’ 10:00:00’,‘yyyy-mm-dd hh24:mi:ss’)
as
select * from student where ssex=‘女’ and sage>20;
表格更新的方法:
- complete 完全刷新,整个表格全部都更新一次数据
- fast 快速刷新,更新你变更部分的数据
- force 默认的更新方式,默认的更新方法就是fast
- never 不要更新表格
declare
begin
dbms_mview.refresh(‘物化视图的名字’,‘更新的方法’);
end;
**视图和物化视图的区别是什么?
- 视图是一张虚拟的表格,不会占用磁盘空间,物化视图是一个真实的表格,会占用磁盘空间
- 视图为了简化select操作用的,物化视图也叫做快照表,是为了保存某个表格或者是select语句在某个时间点的数据而存在的
- 视图是实时更新的,物化视图有两个刷新表格内容的方法,一种是提交数据的时候更新,第二种是定时更新
- 当原表非常大的时候,视图不会减少查询时间,物化视图是会减少查询时间的
- 可以在物化视图上建立索引,进一步加快查询速度**
oracle的序列:sequence,一组有规律的从大到小或者从小到大的数字,一般序列都是在表格里面,充当主键的自增序号来使用的
简单序列的创建:
create sequence 序列名字;
序列的两个属性:
查看序列当前的内容
序列.currval;
使用序列,并且让序列进入到下一个数字
序列.nextval;
create sequence seq02;
create table s1(
id number,
name varchar2(20)
);
insert into s1 values(seq02.nextval,‘tom’);
创建一个自定义的序列:
create sequence 序列名字
start with 开始数字
increment by 自增的长度
maxvalue 最大值的数字 | nomaxvalue
minvalue 最小值的数字 | nominvalue
cache 缓存数字的数量 | nocache
cycle | nocycle;
create sequence seq03
start with 100
increment by 5
maxvalue 150
minvalue 0
cache 10
cycle;
删除序列:
drop sequence 序列名字;