数据库视图

1.视图是数据库中的基本表中选取出来的数据组成的逻辑窗口,是基本表的部分行和列数据的组合。视图是一个虚表。数据库中只存放视图的定义,而不存放视图包含的数据,这些数据仍存放在原表中。所有基本表中的数据如果发生改变,那么从视图中出查询的数据也会发生改变,

2.创建视图

格式

create  view 《视图名》 【(列名)】

as 

 select 语句

注意:

1)定义视图的查询语句通常不包含order by  和distinct子句, 这些子语句客放在视图查询数据的语句中。

2)定义视图时要么指定全部视图列,要么全部省略不写,只能只写视图的部分属性列。如果省略了视图的属性列名,则视图的列名与查询语句的列名相同。但是在如下三种情况下,必须明确指定组成视图的所有列名:

①select语句中的查询列不是单纯的属性名,而是函数或者表达式等无列名的列。

②多表连接是宣传了几个同名列作为视图的字段。

③需要在视图中为列选用新的更合适的列名。

 

数据库在执行create view 语句的结果只是保存视图的定义,并不真正执行其中的select语句。只有在对视图执行查询时,才按视图的定义从基本表中查询数据。

视图的来源可以是表,也可以是视图,还可以是两者的结合。

create   view A 

as

 select from ,grade 

   from shitu s join sc on s.sno=sc.sno

3.定义带表达式的视图

在定义基本表时,为减少数据库的冗余数据,表中只存放基本数据,而基本数据经过各种计算派生的数据一般是不存储的。但是因为视图中的数据并不实际存储,所以定义视图时可以根据需要设置一些派生属性列,在这些派生属性列中保存经过计算的值,这些配送属性由于在基本表中并不实际存在,因此被称作虚拟列。包含虚拟列的视图也被称作带表达式的视图、 

create view V_BirthYear(sno,sname,BirthYear)

as

 select sno,sname, 2015-sage

from student

4.汉分组统计信息的视图

含有group  by ,这样的视图只能查询,不能修改数据

 

create view S_G(sno, AvgGrade )

as

select sno,avg(Grade) from sc

 group by sno

 注意:如果查询语句中的选择列表包含表达式或者统计函数,而且在查询语句中也没有为这样的列指定列名,则在定义视图的查询语句中必须要指定视图属性列的名字。

 

posted @ 2019-05-16 19:17  夜雨敲墙  阅读(1195)  评论(0编辑  收藏  举报