MySQL --------视图
1.什么是视图?
视图就是从一个表或多个表中导出来的表,它是一种虚拟存在的表,表结构和数据都依赖基础表。通过视图不仅可以看到存放在基础表中的数据,还可以像操作基础表一样,对数据经行查询,添加,修改,删除。
2.创建视图:
create [or replace] [definer={user|current_user}]
[sql security{definer|invoker}] VIEW view_name[column_list] AS select__statement with{CASCADED|LOCAL}CHECK OPTION
可以简写为:create VIEW view_name as select 语句
注意:
or replace:可选,替换已有的视图
definer:可选,表示定义视图的用户与安全控制有关,默认为当前用户
sql security :可选,用于视图安全,有一下两种:
1)definer(默认):用定义者的权限来执行
2)invoker:由调用视图的权限来定义
view_name:创建视图的名称
column_list:可选,用于指定视图中的各个列的名称,默认情况下,与select的查询表结构相同。、
select__statement:select语句
with check option:可选,用于视图数据操作时的检查条件。若省略可以不进行检查,有以下两种:
1)CASCADED(默认):操作数据时满足所有相关视图和表定义的条件。例如:当在一个视图的基础上创建另一个视图时经行级联检查。
2)LAOCAL:操作数据时满足该视图本身定义的条件。
3.1修改视图
1)替换已有的视图:
#1创建视图view_good
create VIEW view_good as select id,name from sh_goods;
#2修改已有的视图view_goods
create or replace VIEW view_goods as select id,name from sh_goods;
2)使用alter view 语句修改视图
#1创建视图view_good
create VIEW view_good as select id,name from sh_goods;
#2修改已有的视图view_goods
alter VIEW view_goods as select id,name from sh_goods;
3.2删除视图:
当视图不在需要时 可以删除,在删除时不会删除基本表中数据,删除一个或多个使用的drop VIEW
drop VIEW view_goods;
3.3视图的数据操作:
#1添加数据insert
insert into view_goods vlues(1,‘图书1’);
#2修改数据update
update view_goods set name=‘图书2’ where id=1;
#3删除数据delete
delete from view_goods where id=1;
4.视图的检查条件:
#1创建第一个视图
create VIEW view_goods as
select id,name from sh_goods where id<30;
#2创建第二个视图,使用cascaded(级联)检查
create VIEW view_goods_1 as
select id,name from sh_goods where id>20
with check option ;
#3插入数据:id 必须大于20小于30不然插入不了
#4创建第3个视图:使用local非级联检查
create VIEW view_goods_2 as
select id,name from sh_goods where id>20
with loacl check option
#5插入数据测试,只需要id大于20就行但插入数据大于30的数据不可以被显示