视图

137 阅读2分钟

视图

视图

*1. 视图的介绍:

通俗的讲。视图只保存sql 的查询逻辑,不保存数据内容,主要就是查询sql 的逻辑

*2. 视图的基本语法:

1.创建视图 : create or replace view 视图名 as select 字段名 from 查询的表 + 条件

create or replace view tb_user1 as select id,name from tb_user where id < 100;
  1. 查看视图:方式一 show create view + 视图名

    show create view tb_user1
    
-- 方式二 select * from 视图名
select * from tb_user1 where id < 26; -- 条件应该是在创建时的基础上查询的条件
  1. 修改视图 : 两种方式

    -- 方式一 create or replace view 视图名 as select 字段名 from 修改的表名 (条件)
    create or replace view tb_user1 as select id,name,phone from tb_user where id < 10;
    -- 方式二 alter view 视图名 as select 字段名 from 修改的表名 (条件)
    alter view tb_user1 as select  id,name from tb_user where id < 5;
    
    
  2. 删除视图: drop view + 视图名

*3. 视图的检查选项

在使用视图的检查选项时,mysql会根据视图检查正在更改的每行,例如添加 删除 插入 等,并且mysql允许基于另一个视图创建视图,
他会依赖视图中的规则以保持一致性,

1.cascaded的使用:

比如,v2视图是基于v1视图的,如果在v2视图创建的时候指定了检查选项为 cascaded,但是v1视图
创建时未指定检查选项。 则在执行检查时,不仅会检查v2,还会级联检查v2的关联视图v1。

例子:

-- 例子  cascaded使用
-- 添加
create or replace view score_1 as select id,name from score where id <66 with cascaded check option ;

select * from score_1;

insert into score_1 values (5,'小吉');
insert into score_1 values (66,'小唐');

-- 在另外一张视图上添加检查选项
create or replace view score_2 as select id,name from score_1 where id >4 with cascaded check option ;
select  * from score_2;
insert into score_2 values (4,'小兴'); -- 遵循检查选项的条件  取两个视图的交集

-- 当有第三个视图 但是没有检查选项时  如果不符合这个条件但是符合别的视图的条件不会报错会被添加 但是符合第三个条件不符合有检查选项的条件不会添加会报错

2.local的使用:

比如,v2视图是基于v1视图的,如果在v2视图创建的时候指定了检查选项为 local ,但是v1视图创
建时未指定检查选项。 则在执行检查时,知会检查v2,不会检查v2的关联视图v1。

*4. 视图的更新

 要使视图可以更新,视图中的行和基础表中的行之间要存在一一对应的关系,以下各种情况视图不可以更新
 A. 聚合函数或窗口函数(SUM()、 MIN()、 MAX()、 COUNT()等)
B. DISTINCT
C. GROUP BY
D. HAVING
E. UNION 或者 UNION ALL
 */
-- 例如
create or replace view  count1 as  select count(*) from score;
select * from count1;
-- 进行增删改的操作  执行错误  因为不满足基础表和视图行一一对应的关系
insert into count1 values (10);

*5. 视图的作用

视图的作用: 简单 安全  数据独立
1). 简单
视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视
图,从而使得用户不必为以后的操作每次指定全部的条件。
2). 安全
数据库可以授权,但不能授权到数据库特定行和特定的列上。通过视图用户只能查询和修改他们所能见
到的数据

3). 数据独立
视图可帮助用户屏蔽真实表结构变化带来的影响