简介视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。
通过视图,可以展现基表的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。
基表:用来创建视图的表叫做基表base table

视图的诸多优点,如下
  1)简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。

  2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。

  3)数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率

1.创建视图

create view view_test as select * from test;
create or replace view view_test as select * from test where id=1; --替换已有视图

2.查看视图

select * from information_schema.views; 查看视图信息
show create view view_test; 查看视图信息
desc view_test;
select * from view_name; 查询视图数据

3.视图的更改

update view_test set name='tom1' where id=1; --test表数据也更改了

视图的DML操作,不是所有的视图都可以做DML操作。
有下列内容之一,视图不能做DML操作:
(1).select子句中包含distinct
(2).select子句中包含组函数
(3).select语句中包含group by子句
(4).select语句中包含order by子句
(5).select语句中包含union 、union all等集合运算符
(6).where子句中包含相关子查询
(7).from子句中包含多个表
(8).如果视图中有计算列,则不能更新
(9).如果基表中有某个具有非空约束的列未出现在视图定义中,则不能做insert操作

4.删除视图

drop view if exists view_test;

5.使用with check option约束

--对视图所做的DML操作的结果,不能违反视图的WHERE条件的限制。
create view view_test as select * from test where id in (1,2,3) with check option;
update view_test set name='tom1' where id=5; --update操作不生效

 

 posted on 2022-02-08 17:48  boye169  阅读(36)  评论(0编辑  收藏  举报