SQL视图和物化视图
--视图
一段复杂的SQL,取一个别名作为表名,可以直接从这个表名中查询数据,当发生查询时,实际是 执行这段SQL并返回结果。
视图和表的区别在于: 表是实际存储数据。视图:用到的时候再查询,不存储数据,不占空间。
--使用者必须先赋权,有创建视图的权限。
grant create view to 用户;
创建一个视图
例子:
CREATE VIEW empvu AS SELECT e.empno,e.ename,d.dname,d.loc from emp e join dept d on e.deptno =d.deptno;
--视图可以像表一样进行正常查询
select * from empvu;
视图应用场景:
1. 降低使用这个的复杂度,不需要了解底层的实际的细节。
2. 重复出现的场景,可以循环使用,降低SQL的复杂度
注:
如果一个SQL里面反复用的代码使用 with as 的查询结果;
如果在多个SQL公用,使用视图。每次使用视图,都会触发对应的SQL查询。
--物化视图
---保存SQL查询的结果,并且可以 通过 手工定时 或者 由提交触发更新的方式,
-让物化视图的数据和 源表保持同步
例子:
create materialized view vi_emp refresh force on commit ---当源表的数据变了之后,会自动刷新物化视图的数据结果。 -让物化视图的数据和 源表保持同步。 as select d.dname,e.ename,e.job,e.hiredate from scott.dept d,scott.emp e where d.deptno=e.deptno;
---物化视图的好处-----预计算/自动就按 ---提前计算好结果
详细的可以看:https://blog.csdn.net/qq_37708564/article/details/79890354