7.1 认识视图
7.1.1 视图的含义
视图是一种常用的数据库对象,可以把它看成从一个或几个源表导出的虚表或存储在数据库中的查询,对视图所引用的源表来说,视图的作用类似于筛选。
视图一经定义后,就可以像源表一样被查询、修改和删除。视图为查看和存取数据提供了另外一种途径,使用查询可以完成的大多数操作,使用视图一样可以完成。
使用视图还可以简化数据操作。当通过视图修改数据时,相应源表的数据也会发生变化 ;同时,若源表的数据发生变化,则这种变化也可以自动地同步反映到视图中。
视图是在源表或者视图基础上重新定义的虚拟表,它可以从源表中选取用户所需的数据,那些对用户没有用或者用户没有权限了解的数据,都可以屏蔽掉。
7.2 创建视图
创建视图可以使用 Create View 语句,该语句完整的语法格式如下 :
Create
[ Or Replace ]
[ < 算法选项 > ]
[ < 视图定义者 > ]
[ < 安全性选项 > ]
View < 视图名 > [ < 视图的字段名称列表 > ]
As <Select 语句 >
[ 检查选项 ]
【说明】
7.3 查看视图的相关信息
1.使用 Describe 语句查看视图的结构定义
如果只需要了解视图的各个字段的简单信息,可以使用 Describe 语句,其语法格式与查询数据表一样。通常情况下,可以使用缩写 Desc 代替 Describe。
Describe < 视图名称 > ;
2.使用 Show Table Status 语句查看视图的基本信息
MySQL 中,可以使用 Show Table Status 语句查看视图的基本信息,其语法格式如下 :
Show Table Status Like < 视图名称 >
该语句执行结果中列“Comment”的值为“VIEW”,表示视图,其他列为 NULL(说明这是一个虚表)。
3.使用 Show Create View 语句查看视图的定义信息
MySQL 中,可以使用 Show Create View 语句查看视图的定义信息,其语法格式如下 :
Show Create View < 视图名称 > ;
【任务 7-1】使用 Create View 语句创建单源表视图
【任务描述】
创建一个名称为“view_ 人邮社 0701”的视图,该视图包括“人民邮电出版社”出版的所有价格大于 40 元的图书的信息,视图中包括数据表“图书信息”中的商品编号、图书名称、出版社、商品类型等数据,已知“人民邮电出版社”的字段“出版社 ID”的值为 1。
【任务实施】
【任务 7-2】使用 Navicat for MySQL 创建多源表视图
【任务描述】
创建一个名称为“view_ 人邮社 0702”的视图,该视图包括“人民邮电出版社”出版的所有图书的信息,视图中包括数据表“图书信息”中的商品编号、图书名称、数据表“出版社信息”中的出版社名称、数据表“商品类型”中的类型名称等数据。
【任务实施】
在【视图创建工具】窗口中单击【构建】按钮,关闭该窗口返回 Navicat for MySQL 的“视图”定义区域。设置好字段、数据表及关联条件、Where 条件的查询语句如下所示 :
【任务 7-3】修改视图
当视图不符合使用需求时,可以使用 Alter View 语句对其进行修改,视图的修改方法与创建方法相似,其语法格式如下 :
Alter
[ < 算法选项 > ]
[ < 视图定义者 > ]
[ < 安全性选项 > ]
View < 视图名 >
As <Select 语句 >
[ 检查选项 ]
【任务描述】
(1)修改视图“view_ 人邮社 0701”,使该视图包括“人民邮电出版社”出版的价格高于 40 元的所有图书信息,视图中包括数据表“图书信息”中的商品编号、图书名称、价格、出版社、商品类型等数据。
(2)修改视图“view_ 人邮社 0702”,使该视图包括“人民邮电出版社”出版的价格高于 40 元的所有图书信息,视图中包括数据表“图书信息”中的商品编号、图书名称、数据表“出版社信息”中的出版社名称、数据表“商品类型”中的类型名称等数据。
【任务实施】
【任务 7-4】利用视图查询与更新数据表中的数据
【任务描述】
(1)创建一个名称为“view_ 用户注册 0703”的视图,该视图包括所有的用户注册信息。
(2)利用视图“view_ 用户注册 0703”查询“权限等级”为“C”的用户注册信息。
(3)利用视图“view_ 用户注册 0703”新增一个注册用户,用户 ID 为“7”,用户编号为“u00007”,用户名称为“测试用户”,密码为“todayBetter”,权限等级为“A”,手机号码为“18074198678”,用户类型为“2”。
(4)使用视图“view_ 用户注册 0703”修改前一步新注册的用户,将其权限等级修改为“C”,用户类型修改为“1”。
(5)使用视图“view_ 用户注册 0703”删除前面新注册的用户“测试用户”。
【任务实施】
【任务 7-5】删除视图
删除视图是指删除数据库中已存在的视图,删除视图时,只能删除视图的定义,不会删除源表的数据。在 MySQL 中,使用 Drop View 语句删除视图时,用户必须拥有 Drop 权限。
删除视图的语法格式如下 :