实训四:索引与视图 - SQL视图(teachingdb数据库)
视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。通过视图,可以展现基表(用来创建视图的表)的部分数据;视图数据来自定义视图的查询表。我们知道了视图的定义,那么,为什么要使用它呢?因为视图有如下优点:①. 简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集;②. 安全:使用视图的用户只能访问他们被允许查询的结果集,对
第1关:创建视图
任务描述
本关任务:建立计算机系的学生的视图 student_cs。
相关知识
为了完成本关任务,你需要掌握:
-
视图的定义;
-
创建视图;
视图的定义
视图(view
)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。通过视图,可以展现基表(用来创建视图的表)的部分数据;视图数据来自定义视图的查询表。
我们知道了视图的定义,那么,为什么要使用它呢?
因为视图有如下优点:
①. 简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集;
②. 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行或列,但是通过视图就可以简单的实现;
③. 数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列队视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。
创建视图
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
参数说明:
-
OR REPLACE
:表示替换已有视图; -
ALGORITHM
:表示视图选择算法,默认算法是UNDEFINED
(未定义的):MySQL
自动选择要使用的算法 ;merge
合并;temptable
临时表; -
column_list
:可选参数,指定视图中各个属性的名词,默认情况下与select
语句中查询的属性相同; -
select_statement
:表示select
语句; -
[WITH [CASCADED | LOCAL] CHECK OPTION]
:表示视图在更新时保证在视图的权限范围之内;cascade
是默认值,表示更新视图的时候,要满足视图和表的相关条件;local
表示更新视图的时候,要满足该视图定义的一个条件即可。
示例一:
示例二:
以上两个示例可以看出,虽然两个视图的字段名不同,但是,数据是相同的,因为两个视图引用的是同一个表中的数据,并且,as
后的创建视图的语句也相同。
在实际开发中,用户可以根据自己的需求,通过视图的方式,获取基本表中自己需要的数据,这样既能满足用户的需求,也不会破坏基本表原来的结构,从而保证了基本表中数据的安全性。
编程要求
根据提示,在右侧编辑器补充代码:
- 建立计算机系的学生的视图 student_cs。 student表结构 学生表
测试说明
编写代码后,点击测评即可。
开始你的任务吧,祝你成功!
参考代码
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
create view student_cs as select * from student where sdept = '计算机' ;
/**********End**********/
第2关:创建视图-练习一
任务描述
本关任务: 创建由学号和平均成绩两个字段的视图 v_grade_avg
相关知识
见上一关
编程要求
根据提示,在右侧编辑器补充代码, 创建由学号和平均成绩两个字段的视图 v_grade_avg
成绩表score结构如下:
测试说明
编写代码后,点击测评即可。
开始你的任务吧,祝你成功!
参考代码
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
create view v_grade_avg
as select sno as '学号',avg(grade) as '平均成绩' from score group by sno;
/**********End**********/
更多推荐
所有评论(0)