zoukankan      html  css  js  c++  java
  • 数据库学习之七--视图(View)

    一、定义

      视图:指计算机数据库中的一个临时虚拟表,其内容由查询定义;同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。

    二、优点

      1. 优点:

        a. 无需保存数据,可以节省存储设备的容量;

        b. 将频繁使用的SELECT 语句保存成视图,不用每次都重新书写。特别是在进行汇总以及复杂的查询条件导致SELECT 语句非常庞大时可以大大提高效率;

        c. 视图中的数据会随着原表的变化自动更新,可以保证数据的最新状态;

        d. mysql允许基于其他视图创建视图;

      2. 缺点:

        a. 定义视图时不能使用ORDER BY子句;

        b. 无法将视图的更改反映到原表中的;记住:视图是一张衍生的表,原表改动,视图会随着变动,反之,视图无法改变原表,所以视图无法插入,删除或  者更新数据;

      注: 应该将经常使用的SELECT语句做成视图。

    三、示例:

      1. 数据库中现有两张表Employee_China和Employ_USA, 如下:

      

       

       2.创建视图

    CREATE VIEW employee AS
    SELECT FistName, lastName, Age, City FROM Employee_China
    UNION 
    SELECT FistName, lastName, Age, City FROM Employee_USA
    GROUP BY age 

      创建视图成功返回结果:

      

       3.查看视图字段

    DESCRIBE employee;

      运行结果:

      

      4. 查看数据库中有所有的视图:

    show table status where comment='view';

      运行结果:

      

       注:由于这张表太长,只截取了一半;

      5. 查看数据库中所有视图表

    show full tables where Table_type = "VIEW";

      运行结果:

      

      6. 删除视图

    Drop VIEW employee;

    四、视图的使用

      1. 应该尽量将频繁使用的查询作为视图;

      2. 视图可以和表一样的使用和操作,不过试图是一张临时虚表;

      

  • 相关阅读:
    Leetcode665.Non-decreasing Array非递减数组
    在MyEclipse中把多行代码用一快捷键注释掉
    struts2中addFieldError()方法
    [bzoj2588][Spoj10628]Count on a tree_主席树
    [bzoj3123][Sdoi2013]森林_主席树_启发式合并
    [bzoj1500][NOI2005]维修数列_非旋转Treap
    [bzoj1452][JSOI2009]Count_树状数组
    [bzoj1369][Baltic2003]Gem_树形dp_结论题
    [bzoj1195][HNOI2006]最短母串_动态规划_状压dp
    [bzoj2242][Sdoi2011]计算器_exgcd_BSGS
  • 原文地址:https://www.cnblogs.com/anlia/p/11738991.html
Copyright © 2011-2022 走看看