万金流
以码会友。 吾Q:578751655。 水平有限,轻喷,谢!

视图是一个古老的数据库概念,一项传统的数据库技术。

它是由数据库里的数据(表或者其他视图)生成的一张“虚表”。一般用来归纳常用的查询数据。可以通过对视图数据操作(增删改),来实现对其来源数据的操作。

例如:学校的”学生基本情况表“可能会有近百个字段,常用的字段可能不到10个。就可以为这些常用字段做一个视图,简化日常工作。

它的作用,有一点像通用表表达式(cte)。不同的是,视图作为和表一样的数据库对象,可以长期保存,随时调用。

视图里不保存数据,每次对他进行操作,都会从“来源表”中重新抽取数据。这也是称它为”虚表“的原因。

例子数据表(t1学生表,t2课程表,t3选课表):

 

 

 

 

 

 

 

 

 对于t1表,假设生日(sr)字段常常不用,可以创建一个只包含常用字段(学号、姓名)的视图v1:

 create view v1 as select xh,xm from t1;

对于v1,可以像普通表一样进行CRUD操作。

查:

 

 

增:

 

 

 删改略。对表有影响的操作,都是通过视图,作用在基础表t1上的。


如果视图数据来源于多张表:

 create view v2 as select xm,cmc,cj from t1 join t3 on t1.xh=t3.xh join t2 on t3.cid=t2.cid;

查询方式和结果不变:

 

 

 需要注意:一次增删改,仅允许影响一张表。

 update v2 set cj=cj+1 where xm='zs';

 

 

 如果试图影响多张表:

 

 解析:

1、同时修改多表是一件复杂的事(如:想要同时修改A、B两张表,A表内容修改过后,视图内容就会发生变化,原本要修改的B表内容可能就匹配不到了。),很容易出问题,所以干脆禁止这么做。

2、对多表视图进行增删,必然牵涉到多表同时变化,所以这个操作,也就别想了。


小结:1、视图是可更新的虚表,多用于长期保存常用的查询内容。2、对单表可以很方便进行增删改操作。3、多表增删改需谨慎,稳妥的办法是直接修改基础表。

视图的修改: 

 alter view v2 (学号,姓名,科目,成绩) as select t1.xh,xm,cmc,cj from t1 join t3 on t1.xh=t3.xh join t2 on t3.cid=t2.cid;

先删除再创建。

 

 视图的删除:

drop view v2;

截图略。

结合以上内容,可自学课本8.2节。

posted on 2023-04-11 16:32  万金流  阅读(431)  评论(0编辑  收藏  举报