首页 > 代码库 > mysql 视图

mysql 视图

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

2,什么时候要用到视图?
      如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询。

3,视图的创建语法
     create view 视图层 as select 语句。

4,使用视图有什么好处?
(1)简化查询语句
比如:有一张商品表,我们经常要查每个栏目下商品的平均价格
 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;就可以了。
(2)可以进行权限控制
把表的权限封闭,但是开放相应的视图权限,视图里只开放部分数据列
比如我们的goods商品表,我们不想让别人看到我们的销售价格,这时候我们就可以把查看商品表的权限封闭,创建一张视图
create view showGoods as select goods_id,goods_name from goods;
不出现销售价格列就可以了。
(3)大数据分表时可以用到
比如表的行数据超过200万行时,速度就会变慢,可以把一张表的数据拆成4张表来存放
News表
newsid  1,2,3,4...
news1,news2,news3,news4表
把一张表的数据分散到4张表里,
可以用视图,把四张表形成一张视图
create view news as select * from news1 union select * from news2 union ...

5,视图的修改
       alter view 视图名 as select 语句;

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

7,试图改变会影响到表吗?
(1)视图的增删改查也会影响到表;
(2)视图并不是总是能增删改查的;
     视图的数据与表的数据---对应时可以修改;
     对于视图的insert还应注意:视图必须包含表中没有默认值的列

8,视图的三种类型
注:mysql存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT
Create procedure|function([[IN |OUT |INOUT ] 参数名 数据类形...])
IN 输入参数
表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值
OUT 输出参数
该值可在存储过程内部被改变,并可返回
INOUT 输入输出参数
调用时指定,并且可被改变和返回

mysql 视图