mysql中的视图

1、视图的定义
view是什么?view可以看出一张虚拟表,通过某种运算得到的一个投影。
2、视图的创建语法
create view 视图名 AS select 语句 from 某个表;
举例如:
create view stats as select cat_id,avg(shop_price) as pj from goods group by cat_id;
在这里插入图片描述
3、视图的作用
(1)简化查询过程。比如复杂的统计,可使用视图生成中间结果,再查询视图;
(2)可以精细的权限控制。比如某张表,用户表为例,现在两个网站搞合作,可以查询对方网站的用户,需要向对方开放用户的权限,但是不想开放用户表中的密码字段。
create view vuser AS select user_id,username,email from uesr ; 可以通过开放视图的权限给对方。
(3)数据多,分表时可以用到。比如小说站,artical 表,1000多万篇,分成artical1、artical2、…artical5这五张表中,每张表200万条,查询小说时,不知道查询哪张表。
4、视图与表之间的关系
视图是表的一个影子,那么表与视图数据变化时的相互影响问题。
(1)表的数据变化会影响到视图的数据变化。
我们将good表中的某个商品的shop_price进行更改,则视图中的值也发生更改。这里没有截图,之前视图中的cat_id=15的商品均值为60,现在变化为80,这里忘了截图说明。
在这里插入图片描述
以这张表为例,均价来源多行数据(shop_price)的计算结果,如果pj列的值发生变化,映射过去,到底在goods表中的哪几行shop_price?
所以当前视图无法更改!!!
(2)视图某种情况下,视图可以更改,视图更改,表也发生更改。这种情况是视图与表的数据一一对应才行。也就是表可以推出视图,视图也可以推出表,视图相当于函数的映射。
5、视图的应用
练习:查询每个栏目下商品的平均价格,并取前三高的栏目
(1)未学习视图时,我们使用的sql语句为:select cat_id,avg(shop_price) as pj from goods group by cat_id order by pj desc limit 3;
但是当我们频繁使用这些表的属性时,创建一张视图就显得尤为重要了.
在这里插入图片描述
(2)使用视图
create view stats as select cat_id,avg(shop_price) as pj from goods group by cat_id;
在这里插入图片描述
在view的基础上:查询每个栏目下商品的平均价格,并取前三高的栏目!
select * from stats order by pj limit 3;
在这里插入图片描述
显然是视图就是表的一个影子,不过这个影子仿佛更加简单,但是在增删改的时候特别注意我上面说到的表与视图的关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值