您的位置:首页 > 数据库 > MySQL

MySQL数据库总结(7)视图

2016-03-13 13:34 337 查看
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句话,取数据并放在临时表,然后去查临时表.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: