第六章视图与索引

第六章 视图与索引

6.1 视图

6.1.1 什么是视图

视图通过 定制的方式显示来自一个表或多个表的数据。

视图的本质 是数据库对象,如果成功的创建了视图,用户可以像操作普通表一样查询甚至修改视图内的数据。

视图的本身是没有任何的数据的 ,它只是对表的一个查询结果进行了实体化的反馈。

有关于视图所有的定义,保存在数据字典内,创建视图所基于的表称为"基表"。

6.1.2 为什么要使用视图

例如经常要对 student和grade表进行连接查询,每次都要做冗余的连接,才能完成后续的检索或分析过于麻烦。同时对于一些私密的信息,并不想让其他的操作人访问,我们就可以实现准备好一个定制化的视图供他去使用。

6.1.3 视图的作用和特点

作用

1、保存查询数据

2、控制安全

优点

1、提供了灵活一致级别的安全性

2、隐藏了数据原有的复杂性

3、简化了用户对于SQL指令的编辑

4、通过重命名列,从另一角度提供数据

6.1.4 视图的创建

#语法:
    CREATE [OR REPLACE] VIEW 视图名
        [别名1,别名2,.....]
        AS 必要的查询语句
        [额外的声明 ===>  WITH READ ONLY];
#如:创建视图,Student_V_1 包含了一号班级编号的所有学生的学号 姓名 班级名称 生日 住址
CREATE VIEW Student_V_1
AS SELECT student.StudentNo,student.StudentName,grade.GradeName,student.BornDate,student.Address
FROM student INNER JOIN grade ON student.GradeID = grade.GradeID
WHERE student.GradeID = 1;
​
CREATE VIEW Student_V_2
(学号,姓名,班级名,生日,邮箱)
AS SELECT student.StudentNo,student.StudentName,grade.GradeName,student.BornDate,student.Address
FROM student INNER JOIN grade ON student.GradeID = grade.GradeID
WHERE student.GradeID = 1;
​
#查询当前数据库内所有的视图
SHOW FULL TABLES WHERE Table_type = 'VIEW'; 

6.1.5 视图的使用规则

1、视图必须有唯一命名

2、mysql中对于视图的数量没有限制

3、创建视图的权限,必须要进行授权

4、视图支持嵌套,也就是说可以利用其他视图检索出来的数据创建新视图

5、视图内支持分组查和排序查,但是会覆盖掉原有的排序或分组机制

6、视图不能创建索引,也不能关联触发器

7、视图和表可以出现在同一查询语境内

6.1.6 视图的修改

#如替换原有视图信息
CREATE OR REPLACE Student_V_1
.......................
#比如XXX人创建视图时Email赋值赋的是生日 通过ALTER关键字可以实现视图中字段值的重新赋予
ALTER VIEW Student_V_1
(Email)
AS SELECT Email 
FROM student;
​
​
#注意一下
ALTER VIEW Student_V_1
(Email)
AS SELECT Email 
FROM student;
​
​
ALTER VIEW Student_V_2
(邮箱)
AS SELECT student.Email
FROM student INNER JOIN grade ON student.GradeID = grade.GradeID
WHERE student.GradeID = 1;

6.1.7 视图的删除

DROP VIEW 视图名;

你可能感兴趣的:(数据库)