• 十三、视图


    视图:view
     
    视图的定义:
    视图是由查询结果形成的一张虚拟表
     
    视图的创建语法:
    Create view 视图名 as select语句
     
    视图的删除语法:
    Drop view 视图名
     
    为什么要视图:
    1. 可以简化查询
    2. 可以进行权限控制
    把表的权限封闭,但是开放相应的视图权限,视图里只开放部分数据
    3. 大数据分表时可以用到
    比如,表的行数超过200万行时,就会变慢,
    可以把一张表的数据拆成4张表来存放
    news
    NewsID  1,2,3,4
    News1news2news3news4
    把一张表的数据分散到4张表里,分散的方法很多,
    最常用的可以用ID取模来计算。
    Id%4+1=1,2,3,4
    比如$_GET[id]=17,
    17%4+1=2,$tablename=news.2
    Select * from news2 where id = 17;
     
    还可以用视图,把4张表形成一张视图
    Create view news as select * from n1 union select * from n2 select * from n3 select * from n4
     
    视图的修改:
    Alter view 视图名 as select语句
     
     
    视图与表的关系:
    视图是表的查询结果,自然表的数据改变了,影响视图的结果。
     
    视图改变了呢?
     
    1. 视图增删改也会影响到表
    2. 但是,视图并不总是能增删改的,
     
    :视图的数据与表的数据一一对应时,可以修改.对于视图insert还应注意, 视图必须包含所有表中没有默认值的列
     
    视图的algorithm
    Algorithm = merge/temptable/undefined
    Merge:当引用视图时,引用视图的语句与定义视图的语句合并。
    Temptable:当引用视图时,根据视图的创建语句建立一个临时表。
    Undefined:未定义,自动,让系统帮你选。
     
    Merge,意味着视图只是一个规则,语句规则,当查询视图时,
    把查询视图的语句(比如where哪些)与创建时的语句where子句等合并,分析形成一条select语句。
     
    例:
    创建视图的语句:
    Create view g2 as select goods_id,cat_id,goods_name,shop_price from goods order by cat_id asc,shop_price desc;
    查询视图的语句:
    Select * from g2 group by cat_id;
     
    最终执行的语句:
    select goods_id,cat_id,goods_name,shop_price from goods group by cat_id order by cat_id asc,shop_price desc;
     
    temptable是根据创建语句瞬间创建一张临时表,
    然后查询视图的语句从该临时表查数据。
     
    Create algorithm=temptable view g2 as select goods_id,cat_id,goods_name,shop_price from goods order by cat_id asc,shop_price desc;
     
    查询视图的语句:
    Select * from g2 group by cat_id;
     
    最终执行的2句话:取数据并放在临时表,然后去查临时表。
     
     
  • 相关阅读:
    人人都是 Serverless 架构师 | 现代化 Web 应用开发实战
    KubeDL HostNetwork:加速分布式训练通信效率
    独家下载!阿里云云原生携 10+ 技术专家带来《云原生与云未来的新可能》
    国内唯一!阿里云容器服务进入 Forrester 领导者象限
    函数abs的隐式声明 gcc5.1.0 Implicit declaration of function abs gcc5.1.0
    Vue Design Patterns All In One
    linux 中 tar.lzma 文件的解压、压缩
    linux 中删除除第一次匹配特定字符串所在行之外的所有行
    linux 系统中输出匹配特定字符至末尾的行
    根据位点的物理位置、重组率计算遗传距离
  • 原文地址:https://www.cnblogs.com/steven9898/p/11340621.html
Copyright © 2020-2023  润新知