MySQL数据库总结(7)视图

    • 1视图定义
    • 2为什么要视图
    • 3视图与表的关系
    • 4视图的algorithm

1、视图定义:

视图是由查询结果形成的一张虚拟表

视图的创建语法:
Create view 视图名 as select 语句

视图的删除语法:
Drop view

视图的修改
Alter view as select xxxxxxx

2、为什么要视图?

1、可以简化查询

2 、以进行权限控制,把表的权限封闭,但是开发相应的视图权限,视图里只开放部分数据

3、大数据分表时可以用到

  • 比如表的行数超过200万行时,就会变慢,可以把一张的表的数据拆成4张表来存放news表

       news1,news2,news3,news4表
    
    • 把一张表的数据分散到4张表里,分散的方法很多,
      最常用可以用id,取模来计算
      Id%4+1 = [1,2,3,4]
  • 还可以用视图,把4张表形成一张视图
    Create view news as select from n1 union select from n2 union……

3、视图与表的关系

视图是表的查询结果,表的数据改变了,影响视图的结果

视图改变了呢?
视图增删改也会影响表
但是,视图并不总是能增删改的

答:视图的数据与表的数据 一 一对应时.可以修改
对于视图insert 还应注意,视图必须包含表中没有默认值的列

4、视图的algorithm

Algorihm = merge temptable undefined
Merge:当引用视图时,引用视图的语句与定义视图的语句合并
Temptable:当引用视图时,根据视图的创建语句建立一个临时表
Undefined:未定义,自动,让系统帮你选

(1)、Merge,意味着视图只是一个规则,语句规则,当查询视图时,
查询视图的语句与创建时的语句合并,分析形成一条select语句

例:创建视图语句:
Create view g2 as select goods_id,cat_id,goods_name,shop_price from goods order by cat_id asc,shop_price desc;

查询视图的语句:
Select * from g2 group by cat_id;

最终执行的语句:
Select goods_id,cat_id,goods_name,shop_price from goods group by cat_id order by cat_id asc,shop_price desc;

(2)、temptable是根据创建语句瞬间创建一张临时表,然后查询视图的语句从该临时表查询数据

Create altorethm=temptable view g2 as select goods_id,cat_id,goods_name,shop_price from goods order by cat_id asc,shop_price desc;

查询视图的语句:
Select * from g2 group by cat_id;

最终执行的2句话,取数据并放在临时表,然后去查临时表.

你可能感兴趣的:(数据库,mysql)