创建视图
视图作用
●
简化
数据查询和处理:视图可以为用户集中多个表中的数据,使用户可以将注意力集中在他们关心的数据上,简化用户对数据的查询和处理;
●屏蔽数据库的复杂性:数据库表的更改不影响用户对数据库的使用,用户也不必了解复杂的数据库中的表结构。例如,那些定义了若干张表连接的视图,就将表与表之间的连接操作对用户隐蔽起来;
●
安全性
:如果想要使用户只能查询或修改用户有权限访问的数据,也可以只授予用户访问视图的权限,而不授予访问表的权限,这样就提高了数据库的安全性。
create:表示创建新的视图;or replace:表示如果该 视图已经存在,则用新视图代替它,若视图不存在则创建新视图;
视图的创建分为三种情况:在
单表
中创建视图,在
多表
中创建视图,在
已有视图中创建新的视图
。
-
视图是从一个或者多个表、或其他视图中通过select 语句导出的
虚拟表
; -
数据库中
只存放了视图的定义
,并没有存放视图中的数据; -
浏览视图时产生的数据均来自定义视图查询所引|用 的基表,并且在引用视图时
动态生成
; -
通过视图可以实现对基表数据的查询或修改
。
with check option:
在视图有WITH CHECK OPTION 的情况下: 对视图进行UPDATE修改时,修改的数据会受到原来定义视图时WHERE的条件的影响。
对于delete,有无with check option都一样;
对于insert,有with check
option,要保证insert后,数据要被视图查询出来; 对于没有where 子句的视图,使用with check option是多余的。
查看视图
查看视图:查看数据库中已存在的视图的定义。可以查看视图的基本信息、详细信息;
1、查看视图基本信息的方法:
describe
语句(简写为desc)、
show table status
语句;
2、查看视图详细信息的方法:
show create view
语句。
修改视图
MySQL中通过create or replace view语句和alter语句来修改视图。
更新视图
( 1)使用insert(update也适用)语句在视图中插入一条数据;
语法:
insert [into] view_ name [(col_name…)]values ( )
可以看出,其语法与向表中插入数据相同。
结论:
1、视图若只依赖于一个基表,则可以直接通过视图来更新基本表数据;
2、视图若依赖于多张基表,则一次只能修改一个基表的数据,不能同时修改多个基表的数据。
删除视图
使用delete语句删除视图一条数据;
语法:
delete from view_ name [where子句]
视图数据更新:
注意:当视图中包含如下内容时,视图更新操作将不会被执行:
1、视图中不包含基本表中被定义为非空的列;
2、在定义视图的select语句后的字段列表中使用了数学表达式;
3、在定义视图的select语句后的字段列表中使用了
聚合函数
;
4、在定义视图的select语句引用不可更新视图(一个不可更新的视图中建立的新的视图);
5、在定义视图的select语句中使用了distinct、union、top、 group by、having字句。