zoukankan      html  css  js  c++  java
  • 视图

    视图 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;
    
  • 相关阅读:
    《高校后勤管理信息系统设计与实现》论文笔记五
    《高校后勤管理系统的设计与实现》论文笔记三
    《高校后勤管理系统的设计与实现》论文笔记二
    如何利用React.js开发出强大Web应用
    关于啤酒和尿布故事的真相
    以生活例子说明单线程与多线程
    未来哪些领域WiFi将成为刚需?
    CSS开发中的10个不要
    10年后编程还有意义吗?
    JavaEE中遗漏的10个最重要的安全控制
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4671977.html
Copyright © 2011-2022 走看看