视图的定义:从一个或多个表(或视图)导出的表。

视图与表的不同之处:视图是一个虚表,即视图所对应的数据不进行实际存储,数据库只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。

视图一经定义,就可以像表一样被查询、修改、删除和更新。创建视图时,原表既可以是基本表,也可以是视图。

Create view 语句创建视图,,语法格式如下:

     Create view view_name

         As select_statement [with check option]

    其中,with check option:指出在视图上所进行的修改都要符合select_statement所指定的限制条件,这样可以确保数据修改后,仍可通过视图看到修改的数据。

select_statement:用来创建视图的select语句,可在select语句中查询多个表或视图,以表明新创建的视图所参照的表或视图。对select语句有以下限制:

  • 定义视图的用户必须对所参照的表或视图有查询(即可执行select语句)权限。
  • 不能使用compute或compute by子句。
  • 不能使用order by子句。
  • 不能使用Into子句。
  • 不能在临时表或表变量上创建视图。

视图的运用举例如下:

例一:有两张表:XS(学号、姓名、专业名、出生时间、性别)和XS_KC(学号、课程号、成绩),要求创建CS_KC视图,包括计算机专业各学生的学号、其选修的课程号及成绩。要保证对该视图的修改都要符合专业名为计算机这个条件。

     分解法:A,先查询出专业名为计算机的学生的学号,并查询出该学生选修的课程号及成绩

           查询语句如下:A: select XS.学号,课程号,成绩

                                            from XS,XS_KC

                                               where XS.学号 =XS_KC.学号 and 专业名=‘计算机’

                B,创建视图,包括计算机专业各学生的学号、其选修的课程号及成绩

            查询语句如下:B:Create View CS_KC

                                        As  A with check option

       合并起来的查询语句即为:

            Create View CS_KC

                 AS

                   select XS.学号,课程号,成绩

                                            from XS,XS_KC

                                               where XS.学号 =XS_KC.学号 and 专业名=‘计算机’

                         with check option

 

例二:创建计算机专业学生的平均成绩视图CS_KC_AVG,包括学生学号(在视图中列名为num)和平均成绩(在视图中列名为score_avg)

         分析:在例一中已经创建了视图CS_KC,该虚拟表包括字段学号、成绩,故可以直接使用视图来创建新的视图

         分解如下:

            A,先从视图中查询出学生的学号和平均成绩

              查询语句如下:A:select 学号,Avg(成绩)

                                             from CS_KC

                                                group by 学号

           B,基于A查询出来的结果创建新的视图CS_KC_AVG

               查询语句如下:B: Create View CS_KC_AVG

                                           As A

       合并起来的查询语句即为:

                    Create View CS_KC_AVG(num,score_avg)

                         As

                          select 学号,Avg(成绩)

                                             from CS_KC

                                                group by 学号

 

 

                                 

 

 

posted on 2012-10-19 10:50  @雨欣@  阅读(2025)  评论(0编辑  收藏  举报