SQL——视图作用

来源:互联网 发布:linux firefox找不到 编辑:程序博客网 时间:2024/06/07 06:42

1、视图是一张虚拟表,视图的字段是由我们自定义的,视图只供查询,数据不可更改,查询数据来源于我们建立的实体表。

2、使用视图的优势,视图可以将多个复杂关联表,提取出我们需要的信息,优化查询速度。

以下是使用视图的实例:

(1)建立三张表

wKioL1Ptjj-gJ6DEAACEukazCYo267.jpgwKiom1PtjSejuuUnAACB0OJ87yg643.jpgwKioL1PtjkDT7Lq1AAB61axLMaw679.jpg

   以上表的关系为一对多和一对一的关系,

(2)接下来实现这样一个查询:查询在浦高上学的学生姓名? 

不用视图的做法:查询出一个List,得到gradeids,然后再到grade中根据gradeids查询这么多grades对应的studentids,在使用这些studentsid查询出students循环最后得到name。(过程累赘)

使用视图的操作:select s.id as schoolId,s.school as schoolName,s.gradeid as gradeid,g.grade as gradeName,g.studentid as studentid from school s,grade g  where s.gradeid=g.id; 
wKioL1PtkubC7NSTAAB2kqmCXfY098.jpg

SELECT s.id as schoolId,s.school as schoolName,s.gradeid as gradeid,g.grade as gradeName,g.studentid as studentid ,t.`name` as studentName,t.age as studentAge


运行结果:

              

建立视图后实现查询操作变为:where schoolName='潢高',获取的list循环得到Object,通过Object.getStudentName,再将查询到的结果建立一张虚拟表

create view table_sgt as(select s.id as schoolId,s.school as schoolName,s.gradeid as gradeid,g.grade as gradeName,g.studentid as studentid ,t.`name` as studentName,t.age as studentAge from school s,grade g,student t where s.gradeid=g.id and  g.studentid=t.id);

        

使用视图,需要把它看着为一张表,建立步骤和建立一张实体表步骤相同,视图查出来的数据只能进行查看,不能增删改。

原创粉丝点击