zoukankan      html  css  js  c++  java
  • mysq 视图的用法

    一. 视图概述

    视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
    对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。
    视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据

    既然视图的定义是基于基本表的,哪为什么还要定义视图呢?这是因为合理地使用视图能够带来许多好处:
    1、 视图能简化用户操作
    视图机制使用户可以将注意力集中在所关心地数据上。如果这些数据不是直接来自基本表,则可以通过定义视图,使数据库看起来结构简单、清晰,并且可以简化用户的的数据查询操作。例如,那些定义了若干张表连接的视图,就将表与表之间的连接操作对用户隐藏起来了。换句话说,用户所作的只是对一个虚表的简单查询,而这个虚表是怎样得来的,用户无需了解。

    如、创建一个部门为20的所有的员工:
    create view Dept_emp as select emp.* from dept,emp where emp.deptno=dept.deptno and emp.deptno=20;

     在没有使用视图时 是通过SQL语句进行连接查询,现在使用视图,只需要一个SQL即可查询出来;


    2、 视图使用户能以多种角度看待同一数据
    视图机制能使不同的用户以不同的方式看待同一数据,当许多不同种类的用户共享同一个数据库时,这种灵活性是非常必要的。

    -- 创建一个隐藏表字段的视图
    create view emp_filed_hide as
    select ename,job,mgr,deptno from emp;
    -- 隐藏薪资字段,只对外暴露姓名,职位,部门号
    alter view emp_filed_hide
    as 
    select ename,job,deptno from emp; 


    3、 视图对重构数据库提供了一定程度的逻辑独立性
    数据的物理独立性是指用户的应用程序不依赖于数据库的物理结构。数据的逻辑独立性是指当数据库重构造时,如增加新的关系或对原有的关系增加新的字段,用户的应用程序不会受影响。层次数据库和网状数据库一般能较好地支持数据的物理独立性,而对于逻辑独立性则不能完全的支持

    4、可对视图进行crud的操作,同时操作的表的值也会发生变化

    -- 更新视图,也更新表alter
    update   emp_filed_hide set job='clerk1' where ename='smith'; 
    select * from emp_filed_hide where ename='smith'; 
     select * from emp where ename='smith'; 

    总的来说:视图提供了一定的安全性、数据逻辑独立性

  • 相关阅读:
    #3232. 「POI2019 R1」Najmniejsza wspólna wielokrotność
    bzoj4129 Haruna's Breakfast
    uoj:【UNR #3】配对树
    #3409. 小P的生成树(mst)
    #1790. 小A的树
    #2689. 异或树(tree)
    #4740. 校运会
    #4738. 迷惑数字统计
    #4742. 寻找字符串
    dtoj1825. 放棋子(chess)
  • 原文地址:https://www.cnblogs.com/hellohero55/p/12111349.html
Copyright © 2011-2022 走看看