1、视图是一张虚拟表,视图的字段是由我们自定义的,视图只供查询,数据不可更改,查询数据来源于我们建立的实体表。
2、使用视图的优势,视图可以将多个复杂关联表,提取出我们需要的信息,优化查询速度。
以下是使用视图的实例:
(1)建立三张表
以上表的关系为一对多和一对一的关系,
(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;
运行结果:
建立视图后实现查询操作变为: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);
使用视图,需要把它看着为一张表,建立步骤和建立一张实体表步骤相同,视图查出来的数据只能进行查看,不能增删改。