mysql之视图

本文转载自:http://www.cnblogs.com/zzwlovegfj/archive/2012/06/23/2559596.html

1.什么是视图?

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

2.什么时候要用到视图?

如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询

3.视图的创建语法:

create view 视图名 as select 语句;

4.使用视图有什么好处呢?

  ①简化查询语句

  比如:有一张商品表,我们经常要查每个栏目下商品的平均价格

  select cat_id,avg(shop_price) from goods gropy by cat_id;

  这时候我们就可以创建一张视图:

  create view avgPrice as select cat_id,avg(shop_price) from goods gropy by cat_id;

  创建完,以后我们要查每个栏目的平均价格时,只要这么写

  select * from avgPrice;就可以了。

  ②可以进行权限控制

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

  比如我们的goods商品表,我们不想让别人看到我们的销售价格,这时候我们就可以把查看商品表的权限封闭,创建一张视图

  create view showGoods as select goods_id,goods_name from goods;

  不出现销售价格列就可以了。

  ③大数据分表时可以用到

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

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

  News表

  newsid  1,2,3,4...

  news1,news2,news3,news4表

  把一张表的数据分散到4张表里,分散的方法有很多,

  最常用的是id取模来计算 

  id%4+1=[1,2,3,4]

  ...

  还可以用视图,把四张表形成一张视图

  create view news as select * from news1 union select * from news2 union ...

 5.视图的修改

 alter view 视图名 as select 语句;

 6.视图与表的关系

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

 7.那么视图改变了会影响到表吗?

  ①视图的增删改也会影响表;

  ②但视图并不总是能增删改的;

  视图的数据与表的数据一一对应时可以修改;

  对于视图的insert还应注意:视图必须包含表中没有默认值的列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值