zoukankan      html  css  js  c++  java
  • 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
    vue项目引入背景图报Module not found: Error: Can't resolve './src/assets/img/bg2.jpg' in'xxx'错误
    vscode启动项目时报错:ERROR Failed to compile with 22 errors ,These relative modules were not found:
    整合阿里云视频播放器
    layer.open输入字数实时显示
    layer.prompt弹框
    解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题
    微信扫码登录(OAuth2)
    阿里云短信服务
    单点登录(token,JWT)
  • 原文地址:https://www.cnblogs.com/aini521521/p/7348693.html
Copyright © 2011-2022 走看看