视图简析
一概念:
1.视图又称虚拟表,由一组查询语句组成,每次查询视图都是执行该查询语句。
2.可以在视图上生成新的视图,一般多表视图仅支持查询,单表视图支持dml操作,该操作实际上在基表上进行
特殊 :物化视图,物化视图占用内存地址,有独立的数据和表结构,和索引相似,不支持物化视图的数据库如mysql可以使用存储过程和触发器实现。
二作用:
1.视图可以简化查询代码。比如一个相对复杂的查询需要关联多张表,并且该查询在多个地方用到。可以创建一个视图,开发人员只需要查询该视图即可获取到数据。视图可以帮助实现更复杂的业务并简化业务代码,但同时也给数据库增加了负担(将业务添加到了数据库层,不利于数据库的迁移)
2.视图实质是还是转换为sql查询,对查询性能并无提升
三语法:
create [ or replace ] --替换同名视图
[ force ] view [schema.]view_name --强制创建视图不考虑基表是否存在或是否有基表使用权限
[ (column1,column2,...) ] --指定列名,与下面查询的列一一对应,数目必须一样
as
select ...
[ with check option ] --指定对视图dml操作必须是能查询到的数据(满足where条件),默认不检查
as
select ...
[ with check option ] --指定对视图dml操作必须是能查询到的数据(满足where条件),默认不检查
[ with read only ]; --限定视图只读,和with check option不能共存
示例1:create view vw as select a,b,c,d from tb;
示例2:create or replace force view
"数据库名"."视图名"(a,b,c,d)
as
select
(select w from tb2 where ...) as "a",
t.x as "b",
t.y as "c",
t.z as "d"
from tb1 t
where ...
with read only;