• 视图


    视图 view
    在查询时,我们经常
    如何创建试图,建视图的时候,不需要指定视图的列名和列类型,视图就是一种关系,可以说视图是表的影子,它随着查询表的内容的改变而随时更新。
    视图的语法:视图可以当成表看
    create view 视图名 as
    (select * from 其他表名)查询语句,
    视图有什么用呢
    1,可以简化我们的查询
    比如,进行复杂的统计时,先用视图生成一个中间结果,再查询视图
    
    2,更精细的权限控制
    比如,两个网站合作,可以查询对方的用户,需要向对方开放用户表的权限,但是又不想开放用户表的密码字段。
    可以创建一个视图,去掉密码字段,然后开放这个视图给对方
    
    2,数据多,分表是可以用到
    比如 有一系列表,需要在这些表中查询数据,可以将这些表用视图合并,再对这个视图进行查询,就不用对多个表分别查询
    create view art as
    select title from art1 union select title from art2 union select title from art3 union ...union select title from artn;
    
    视图在某种情况下显示可以修改的
    要求视图中的数据和表中的数据是一一对应的关系,就像函数中的映射。
    
    视图algorithm的使用
    相对于建临时表,合并的查询速度更快
    建表:查询-->形成临时表-->查询临时表
    叠加:合并条件-->查询表
    algorithm=merge合并查询
              temptable临时表
              undefined未定义,由系统判断
    
    #建一张简单的查询视图,不用临时表,只用条件合并
    create view v1
    as
    select goods_id,cat_id,goods_name,shop_price from goods where shop_price>300;
    #查询视图
    select goods_id,cat_id,goods_name,shop_price from v1 where shop_price<500;
    
    +----------+--------+------------+------------+
    | goods_id | cat_id | goods_name | shop_price |
    +----------+--------+------------+------------+
    |        8 |      3 | 飞利浦9@9v       |     399.00 |
    +----------+--------+------------+------------+
    1 row in set (0.02 sec)
    
    #对于这种简单的查询,不需要建立临时表
    create algorithm=merge view v2
    as
    select goods_id,cat_id,goods_name,shop_price from goods where shop_price>300;
    #查询视图
    select goods_id,cat_id,goods_name,shop_price from v2 where shop_price<500;
    
    +----------+--------+------------+------------+
    | goods_id | cat_id | goods_name | shop_price |
    +----------+--------+------------+------------+
    |        8 |      3 | 飞利浦9@9v       |     399.00 |
    +----------+--------+------------+------------+
    1 row in set (0.00 sec)
    
    #用时短了很多
    有的情况不能够直接合并,那就建立临时表,如下例:
    create algoithm=temptable view v3
    as 
    select goods_id,cat_id,goods_name,shop_price
    from goods order by cat_id asc,shop_price desc;
    
    #查询
    select * from group by cat_id;
    
  • 相关阅读:
    idea报错。Error:Failed to load project configuration: cannot parse xml file E:project.ideaworkspace.xml: Error on line 1: 前言中不允许有内容。
    数据库索引的使用
    sql查询每个学生的最高成绩mysql语句
    Tomcat下没有编译后的class文件
    fullpage中大的图片超过一屏怎么在手机端滑动显示?
    springmvc拦截器的配置、使用
    过滤器、拦截器中重定向无限循环问题解决
    Linux下的Memcache安装
    Windows下的Memcache安装
    jQuery学习资源参考教程网址推荐
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4671977.html
Copyright © 2020-2023  润新知