第8章:视图
第八章:视图
视图是从一个或多个表中导出来的表,是一种虚拟存在的表。视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。这样,用户可以不用看到整个数据库表中的数据,而只关心对自己有用的数据。视图可以使用户的操作更方便,而且可以保障数据库系统的安全性。在这一章中将讲解的内容包括:
视图的含义和作用
如何创建视图
如何修改视图
如何查看视图
如何删除视图
8.1 视图简介
视图由数据库中的一个表或多个表导出的虚拟表。其作用是方便用户对数据的操作。本节将详细讲解视图的含义、作用。
8.1.1 视图的含义
视图是一种虚拟的表。视图从数据库中的一个或多个表导出来的表。视图还可以从已经存在的视图的基础上定义。数据库中只存放了视图的定义,而并没有存放视图中的数据。这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。
8.1.2 视图的作用
视图是在原有的表或者视图的基础上重新定义的虚拟表,这可以从原有的表上选取对用户有用的信息。那些对用户没有用,或者用户没有权限了解的信息,都可以直接屏蔽掉。这样做既使应用简单化,也保证了系统的安全。视图起着类似于筛选的作用。视图的作用归纳为如下几点:
1.使操作简单化
2.增加数据的安全性
3.提高表的逻辑独立性
视图作用:
8.2 创建视图
创建视图是指在已存在的数据库表上建立视图。视图可以建立在一张表上,也可以建立在多张表上。本节主要讲解创建视图的方法。
创建视图的语法形式
创建视图是指在已存在的数据库表上建立视图。视图可以建立在一张表上,也可以建立在多张表上。本节主要讲解创建视图的方法。
MySQL中,创建视图是通过SQL语句CREATE VIEW(克瑞特.为友)实现的。其语法形式如下:
CREATE [ ALGORITHM(表示视图选择的算法) = { UNDEFINED(自动选择) | MERGE (视图与视图定义定义合并起来)| TEMPTABLE(使用临时表) } ]
VIEW 视图名 [ ( 属性清单 ) ]
AS SELECT语句(查询语句,表示从某个表中满足条件的记录)
下面是视图的权限范围详细解释如下:
[ WITH [ CASCADED | LOCAL ] CHECK OPTION
先进入mysql数据库:
下面是查询和创建视图的权限:
mysql SELECT Select_priv,Create_view_priv FROM mysql.user WHERE user=root;
+-------------+------------------+
| Select_priv | Create_view_priv |
+-------------+------------------+
| Y | Y |
| Y | Y |
+-------------+------------------+
2 rows in set (0.27 sec)
两个Y表示root用户可以查询视图和创建视图。
8.2.2 在单表上创建视图
MySQL中可以在单个表上创建视图。
下面在department表上创建一个简单的视图,这是复制department_view1表
就是创建了一个和上面department_view1一样的表。
下面创建视图带视图名:
CREATE [ ALGORITHM = { UNDEFINED | MERGE | TEMPTABLE } ]
VIEW 视图名 [ ( 属性清单 ) ]—所要创建的视图名 及属性
AS SELECT语句(SELE是查询语句)--用于查询哪几个字段
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ] ;
8.2.3 在多表上创建视图
MySQL中也可以在两个或两个以上的表上创建视图,也是使用CREATE VIEW语句实现的。【示例8-4】下面在department表和worker表上创建一个名为worker_view1的视图。
创建视图的代码如下:
CREATE ALGORITHM=MERGE VIEW
worker_view1 ( name, department,sex, age,address )—创建视图表有这几个字段
AS SELECT name, department.d_name, sex, 2009-birthday, address—表示查询已经存在表中的这几个字段,一一对应
FROM
原创力文档

文档评论(0)