zoukankan      html  css  js  c++  java
  • Mysql视图

    一、视图优点

    http://www.cnblogs.com/wangtao_20/archive/2011/02/24/1964276.html这个介绍的比较详细)

    1.安全性。一般是这样做的:创建一个视图,定义好该视图所操作的数据。之后将用户权限与视图绑定。这样的方式是使用到

    了一个特性:grant语句可以针对视图进行授予权限。
    2.查询性能提高。

    3.有灵活性的功能需求后,需要改动表的结构而导致工作量比较大。那么可以使用虚拟表的形式达到少修改的效果。

    这是在实际开发中比较有用的


    例子:假如因为某种需要,a表与b表需要进行合并起来组成一个新的表c。最后a表与b表都不会存在了。而由于原来程序中编

    写sql分别是基于a表与b表查询的,这就意味着需要重新编写大量的sql(改成向c表去操作数据)。而通过视图就可以做到不修

    改。定义两个视图名字还是原来的表名a和b。a、b视图完成从c表中取出内容。

    说明:使用这样的解决方式,基于对视图的细节了解越详细越好。因为使用视图还是与使用表的语法上没区别。比如视图名a
    ,那么查询还是"select * from a"。

    4.复杂的查询需求。可以进行问题分解,然后将创建多个视图获取数据。将视图联合起来就能得到需要的结果了。

    视图的工作机制:当调用视图的时候,才会执行视图中的sql,进行取数据操作。视图的内容没有存储,而是在视图被引用的时候才派生出数据。这样不会占用空间,由于是即时引用,视图的内容总是与真实表的内容是一致的。

    视图这样设计有什么好处?节省空间,内容是总是一致的话,那么我们不需要维护视图的内容,维护好真实表的内容,就可以保证视图的完整性了。

    二、视图创建

    CREATE VIEW view_name AS
    SELECT column_name(s)
    FROM table_name
    WHERE condition
    例:CREATE VIEW demo AS SELECT ProductID,ProductName FROM Products WHERE Discontinued=No
    查询这个视图:SELECT * FROM demo

    更新视图:
    SQL CREATE OR REPLACE VIEW Syntax
    CREATE OR REPLACE VIEW view_name AS
    SELECT column_name(s)
    FROM table_name
    WHERE condition

    撤销视图:
    DROP VIEW view_name
  • 相关阅读:
    动态规划(0-1背包)---划分数组为和相等的两部分
    动态规划(0-1背包)
    动态规划(最长递增子序列)---最长公共子序列
    动态规划(最长递增子序列)---最长摆动子序列
    动态规划(最长递增子序列)---最长递增子序列
    动态规划(最长递增子序列)
    动态规划(分割整数)---分割整数构成字母字符串
    浅谈进程同步和互斥的概念
    如何由Height Map生成Normal Map
    3D中的切线空间简介
  • 原文地址:https://www.cnblogs.com/orlion/p/4810288.html
Copyright © 2011-2022 走看看