好程序员Java教程:SQL语言之视图

好程序员Java教程:SQL语言之视图,前言:程序员

本章咱们将学习MySQL中的视图,视图是数据库中的重要组件,本文将从视图是什么,视图的做用,建立和使用视图以及修改视图这些方面讲解视图。数据库

 

视图是什么

视图View是一种虚拟的表,自己不保存数据,内部封装了一条SELECT语句,数据来源于查询的一张或多张实际数据的表。安全

视图的结构和真实的表相同,也是有行和列组成,在视图上也能够进行增删改查的操做。函数

 

视图的做用

视图主要用于查询,使用视图的优势是:学习

1) 简单spa

视图能够将复杂的查询语句进行封装,用户使用时不须要关心表的结构、链接关系、筛选条件、分组和排序等等,只须要对视图进行简单的查询。blog

2) 安全排序

建立视图时,能够筛选掉一些不但愿用户看到的行和列,也能够给视图设置访问权限,让不一样级别的用户看到不一样的视图,从而提升数据库的数据安全性。教程

 

 

视图的语法

建立视图io

create view视图名

as

select语句;

删除视图

drop view视图名;

修改视图

replace view 视图名

as

select语句;

使用视图

selec * from 视图名 [where 条件];

代码案例:

  1. -- 在单表上建立视图 查询女同窗的视图
  2. create view view_female_stu
  3. as
  4. select * from tb_student where stu_gender = '女';
  5. -- 使用视图
  6. select * from view_female_stu

  1. -- 使用链接查询建立视图,查询学生姓名、课程和分数
  2. create view view_stu_score
  3. as
  4. select s.stu_id 学号, s.stu_name 姓名,c.course_name 课程,sc.score 分数
  5. from tb_student s left join tb_score sc on s.stu_id = sc.stu_id
  6. left join tb_course c on c.course_id = sc.course_id;
  7. -- 使用视图
  8. select * from view_stu_score where 分数 > 80;

注意:在建立视图时,查询语句中的别名会做为视图的列名

视图的修改

视图主要用于查询,可是也能够执行insert、update和delete语句,结果会映射到视图关联的实际表中。

  1. -- 更新学生的年龄
  2. update view_female_stu set stu_age = stu_age + 3 where stu_id = 4;

执行上面代码的结果是,实际的tb_student表被更新了。

  1. -- 更新学生分数
  2. update view_stu_score set 分数 = 83 where 学号 = 1;

执行上面代码的结果是,更新失败,出现错误:

为何有的视图能够更新,而有的会失败呢?

下面状况的视图不能够执行insert、update和delete操做:

1)多表链接

2)包含distinct

3)包含聚合函数

4)包含group by

5)包含order by

6)包含union、union all

7)包含子查询等

因此对视图执行DML操做的限制条件仍是不少的,大多数状况下咱们仍是对视图进行查询,若是须要DML操做仍是建议对实际表进行操做。

总结

视图是一种虚拟的表,数据来源于从实际表中查询的结果,它能够简化查询操做,以及提升数据库的安全性,本章学习了视图的建立和使用语法,视图能够修改可是有比较多的限制条件,通常仍是用于查询。

相关文章
相关标签/搜索