mysql基础之视图

系统 3382 0
原文: mysql基础之视图

在查询中 , 我们经常把查询结果 当成临时表来看 .

View 是什么 ? View 可以看一张虚拟表 是表通过某种运算得到的一个投影 .

既然视图只是表的某种查询的投影 , 所以主要步骤在于查询表上 . 查询的结果命名为视图就可以了 .

视图与表的关系

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

 

视图改变了呢 ?

0:  视图增删改也会影响表

1:  但是 , 视图并是总是能增删改的 .

 

视图某种情况下 , 是可以修改的 .

要求 视图的数据和表的数据  11 对应 就像函数的映射 .

--> 推出视图对应的数据

视图 --> 推出表对应的数据


视图的定义 :

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

 

视图的创建语法 :

Create view  视图名  as  select  语句 ;

 

视图的删除语法 :

Drop view  视图名

 

视图的修改

Alter view  视图名  as select xxxxxx

 

 

为什么要视图 ?

:1: 可以简化查询

 

2:  可以进行权限控制

把表的权限封闭 , 但是开放相应的视图权限 , 视图里只开放部分数据

 

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

比如 , 表的行数超过 200 万行时 , 就会变慢 ,

可以把一张的表的数据拆成 4 张表来存放


视图的 algorithm

Algorithm = merge/ temptable/ undefined

Merge:  当引用视图时 , 引用视图的语句与定义视图的语句合并 .

Temptable: 当引用视图时 , 根据视图的创建语句建立一个临时表

Undefined: 未定义 , 自动 , 让系统帮你选 .

 

Merge, 意味着视图只是一个规则 , 语句规则 当查询视图时 ,

把查询视图的语句 ( 比如 where 那些 ) 与创建时的语句 where 子句等合并 , 分析 .

形成一条 select  语句 .

创建视图的语句 :

mysql> create view g2 as select goods_id,cat_id,goods_name,shop_price from goods where shop_price>2000

查询视图的语句 :

select * from g2  where shop_price < 3000;

 

最终执行的语句 :

select goods_id,cat_id,goods_name,shop_price from goods where shop_price > 2000 and shop_price < 3000

 

temptable 是根据创建语句瞬间创建一张临时表 ,

然后查询视图的语句从该临时表查数据 .

create algorethm=temptable view g2 as select goods_id,cat_id,goods_name,shop_price from goods where shop_price > 2000

查询视图的语句 :

 select * from g2  where shop_price < 3000;

 

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

Select  goods_id,cat_id,goods_name,shop_price from goods where shop_price > 2000;

========> temptable

 

再次查临时表

Select * from temptable where shop_price< 3000



mysql基础之视图


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论