一、视图概述---为什么使用视图
所谓视图,本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值形式存在。为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。
视图的作用
Ø 使操作变得简单;
Ø 避免数据冗余;
Ø 增强数据安全性;
Ø 提高数据的逻辑独立性;
Ø 简化数据查询和处理:视图可以为用户集中多个表中的数据,使用户可以将注意 力集中在他们关心的数据上,简化用户对数据的查询和处理;
Ø 屏蔽数据库的复杂性:数据库表的更改不影响用户对数据库的使用,用户也不必 了解复杂的数据库中的表结构。例如,那些定义了若干张表连接的视图,就将表与 表之间的连接操作对用户隐蔽起来了;
Ø 安全性:如果想要使用户只能查询或修改用户有权限访问的数据,也可以只授予 用户访问视图的权限,不授予访问表的权限,这样就提高了数据库的安全性。
视图的行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。也就是说视图中的数据随着源表中的数据实时更新。
视图的优点
Ø 查看方便,占空间小,安全性高。
Ø 视图的建立和删除不影响基本表。
Ø 对视图内容的更新(添加、删除和修改记录)会直接影响基本表。
Ø 可以通过隐藏字段功能,实现查看数据的权限管理。
二、创建视图
使用 create view语句创建视图语法为:
create [or replace] //创建新视图或替换已有的视图
[algorithm ={ undefined |merge |temptable }] //视图的三种算法的选择
view 视图名[(列名列表)] //视图名,后可自定义视图列表名
as select语句 //视图内容的定义
[with[ cascaded|local] check option ] ; //权限设置
说明:
Ø create :表示创建新的视图; or replace :表示如果该视图已经存在, 则用新创建的视图代替原视图.
Ø algorithm子句 : 表示为视图选择算法,有三个选项,一般情况下我们不设置此选项。使用第一个参数"undefined",表示MySQL自动选择算法;默认即为此。
Ø view_name : 为视图名。默认情况下,在当前数据库下创建视图,若想给其他数据创建视图,必须在视图名前指定目标数据库名称 ,写为"数据库名.视图名"的形式: db_name.view_name,视图名不能与任何同个库中的表名重名;
Ø column_list : 可以给视图中的列取列名称,多个列用逗号隔开;
Ø select_statement :用来创建视图的select语句,给出了视图所需内容。默认情 况下,select语句检索的列名就是视图的列名称。若想给列名取别的名字,可 使用column_list字句,但注意两者数目必须相等。
Ø With check option :用于视图更新时,保证在视图的权限范围内;要求具有针对视图的create view语句权限,以及针对有select 语句选择列上的某些权限。
Øcascaded | local : 可选参数;
cascade:默认值,更新视图时要满足所有相关视图和表的条件;
local :表示更新视图时满足该视图本身的定义即可。
视图不仅可以从一个基表导出,还可以从多张基表导出来;
并且还可以在已有的视图基础上导出新的视图;
因此可以将视图的创建分为三种情况:在单表中创建视图;在多表中创建视图;在已有视图中创建新的视图。
视图是从一个或者多个表、或其他视图中通过select语句导出的虚拟表;
数据库中只存放了视图的定义,而并没有存放视图中的数据;
浏览视图时产生的数据均来自定义视图查询所引用的基表,并且在引用视图时动态生成;
通过视图可以实现对基表数据的查询或修改。
三、查看视图 SQL语句:
- SHOW TABLES------只查看视图名
- SHOW TABLE STATUS from 数据库名 like "视图名"------查看视图详细信息
- SHOW CREATE VIEW 视图名------查看视图定义信息
- DESCRIBE|DESC 视图名------查看视图设计信息
- select * from 视图名------查看视图中的详细信息
四、删除视图
语法形式:DROP VIEW 视图名1(,视图名2,...,视图名n);
视图作为数据库的一个对象,删除时如表删除相同,都是用drop。可以同时删除多个视图。
五、修改视图
方案1 先删除已经建立的视图,再重建。
方案2 用创建视图时的语句,其中有create or replace。当已有时,即是执行replace。替换已经建立的视图。
CREATE OR REPLACE VIEW 视图名 as 查询语句;
方案3 用Alter语句修改视图。 ALTER VIEW 视图名 as 查询语句;
六、视图的用途
1.检索(查询)数据
通过视图查询数据与通过表查询数据完全相同,只不过通过视图查询比表更安全、更简单、实用。在实现时,只需要把表名换成视图名即可。
- 利用视图操作基本表
对视图内容的更新(添加、删除和修改记录)会直接影响基本表。