• 视图


    视图 view

    在查询中,我们经常把查询结果 当成临时表来看.

    View是什么? View可以看一张虚拟表. 是表通过某种运算得到的一个投影.

    既然视图只是表的某种查询的投影,所以主要步骤在于查询表上.

    查询的结果命名为视图就可以了.

     

    视图的定义:

    视图是由查询结果形成的一张虚拟表.

     

    视图的创建语法:

    Create view 视图名 as  select 语句;

    视图的删除语法:

    Drop view 视图名

     注意:show tables也可以查询到视图

    为什么要视图?

    答:1:可以简化查询。

    比如查询每个栏目下商品的平均价格,并按平均价格排序,查出平均价前三高的栏目:

    2: 可以进行权限控制

    把表的权限封闭,但是开放相应的视图权限,视图里只开放部分数据

    3: 大数据分表时可以用到

    比如,表的行数超过200万行时,就会变慢,

    可以把一张的表的数据拆成4张表来存放.

    News表

    Newsid, 1,2,3,4

    News1,news2,news3,news4表

    把一张表的数据分散到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 union.........

     

     

    视图的修改

    Alter view 视图名 as select xxxxxx

     

     

    视图是表的一个影子.

    表与视图,数据变化时的相互影响问题.

    视图与表的关系

    视图是表的查询结果,自然表的数据改变了,影响视图的结果.

    视图改变了呢?

    0: 视图增删改也会影响表

    1: 但是,视图不是总能增删改的.

    视图某种情况下,是可以修改的.

    要求: 视图的数据和物理表的数据一一对应. 就像函数的映射.

    表-->推出视图对应的数据

    视图-->推出表对应的数据

    对于视图insert还应注意,

    视图必须包含表中没有默认值的列.

    以这个例子而言,平均价来自于多行的的shop_price的计算结果.

    如果pj列的值的变子,映射过去,到底修改哪几行shop_price?

    注:下边的v3虚拟表与stats虚拟表是同一个表

     

     merge和temptable为algorithm的两种算法

  • 相关阅读:
    使用awk根据多维度统计系统tps
    Java实现身份证号码校验
    Java分布式数据导出实践
    Java服务器端消息队列实战
    Java获取当前服务器IP实现
    Jvm dump介绍与使用(内存与线程)
    Java进行身份证格式强校验(准)
    Java性能监控之Instrumentation
    基于linux操作系统安装、使用memcached详解
    基于linux操作系统安装、使用redis详解
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/9241171.html
Copyright © 2020-2023  润新知