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'; 

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

原文地址:https://www.cnblogs.com/hellohero55/p/12111349.html