视图的定义:
视图是一种虚拟存在的表,视图中的数据并不在数据库中真实存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成,通俗的讲就是视图只是保存了查询sql逻辑不保存查询结果,所以创建视图的时候主要就是创建这条sql查寻语句上
视图就像一张表,可以像操作一张表一样操作视图。
创建视图:
create 【or replace】 view 视图名称 as select语句
注:当需要对现有视图的sql语句进行替换时加上or replace
查询视图
select * from 视图名
修改视图
create or replace view 视图名 as select语句
alter view 视图名称 as select语句
删除视图
drop view [if exists] 视图名称,视图名称,...
视图的检查选项
create or replace view 视图名 as select age from user where age>30 with local check option
with local check option可以保障在向视图中插入数据时会检查插入的数据是否满足视图的where条件
with()check option 中()可以为local 或者cascaded,
local:当视图中的select语句是查询另一张视图时,如果被查询视图 (select中的视图)添加检查语句则会检查当前视图及select中的视图。反之如果没有添加则不会检查
cascaded:会将检查属性传递给上级视图
视图更新:
要使视图可以更新,视图中的行与基础表周昂的行之间必须存在一一对应的关系,如果视图中存在:
聚合函数(sum(),min(),count()等),
distinct,
group by,
having,
union 或者union all