zoukankan      html  css  js  c++  java
  • 视图(VIEW)

    “从 SQL 的角度来看视图就是一张表”

    视图和表到底有什么不同呢?区别只有一个,那就是“是否保存了实际的数据”

    通常,我们在创建表时,会通过 INSERT 语句将数据保存到数据库之中,而数据库中的数据实际上会被保存到计算机的存储设备(通常是硬盘)中。因此,我们通过 SELECT 语句查询数据时,实际上就是从存储设备(硬盘)中读取数据,进行各种计算之后,再将结果返回给用户这样一个过程。

    但是使用视图时并不会将数据保存到存储设备之中,而且也不会将数据保存到其他任何地方。实际上视图保存的是 SELECT 语句。我们从视图中读取数据时,视图会在内部执行该 SELECT 语句并创建出一张临时表。

    视图的优点

    •  由于视图无需保存数据,因此可以节省存储设备的容量
    • 可以将频繁使用的 SELECT 语句保存成视图,这样就不用每次都重新书写了

    视图中的数据会随着原表的变化自动更新。视图归根到底就是SELECT 语句,所谓“参照视图”也就是“执行 SELECT 语句”的意思,因此可以保证数据的最新状态。这也是将数据保存在表中所不具备的优势。

    创建视图的方法:注意不要少了AS!

    CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……)
    AS
    <SELECT语句>

    视图的限制

    • 定义视图时不能使用ORDER BY子句
    • 对视图进行更新

    为什么不能使用 ORDER BY 子句呢?这是因为视图和表一样,数据行都是没有顺序的。实际上,有些 DBMS 在定义视图的语句中是可以使用 ORDER BY 子句的A,但是这并不是通用的语法。因此,在定义视图时请不要使用 ORDER BY 子句。

    如果定义视图的 SELECT 语句出现某些条件,那么这个视图就不能被更新。

    • ① SELECT 子句中使用 DISTINCT
    • ② FROM 子句中有多张表
    • ③ 使用了 GROUP BY 子句
    • ④ 使用了 HAVING 子句

    删除视图

    • DROP VIEW 视图名称(<视图列名1>, <视图列名2>, ……)
  • 相关阅读:
    2017.11.2 JavaWeb----第六章 Servlet技术
    2017.11.1 微型计算机原理与接口技术-----第七章 中断系统与8237A DMA控制器
    2017.10.31 微型计算机组成原理与接口技术------- 第六章 存储器
    2017.10.30 软件工程------ 软件测试
    选择排序
    快速排序(基础版)
    [经验]java 高级面试解析
    [经验]java 高级面试
    链表翻转的图文讲解(递归与迭代两种实现)yet
    手把手教你如何自定义DAO框架(重量级干货)(yet)
  • 原文地址:https://www.cnblogs.com/philipchan/p/14322753.html
Copyright © 2011-2022 走看看