视图:定义视图 (建立视图、删除视图格式、查询视图、更新视图、视图的作用)

您所在的位置:网站首页 渠道视图编码怎么搞的 视图:定义视图 (建立视图、删除视图格式、查询视图、更新视图、视图的作用)

视图:定义视图 (建立视图、删除视图格式、查询视图、更新视图、视图的作用)

2024-07-09 09:20| 来源: 网络整理| 查看: 265

视图

        用途非常广泛:可以用在超市年汇总,年报,月报,季报汇总等,都需要用到视图

        视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表,即数据库中只存放视图的定义,即对应的SELECT语句。当用户引用视图时,才根据定义形成虚拟表。

视图一经定义,就可以和基本表一样进行一些操作:查询:删除;在视图之上再定义视图;受限更新。

定义视图                 1、建立视图

        SQL语言使用CREATE VIEW(关键词)命令建立视图,一般格式:

CREATE VIEW[([,].…)] AS select statement [WITH CHECK OPTION];         说明:

        select statement  可以是任意复杂的SELECT语句,但不允许含有ORDERBY子句和DISTINCT短语。         WITH CHECK OPTION 视图上执行的所有数据修改操作(insert、update、delete)的 行都必须满足视图定义中的谓词条件。 

        组成视图的属性列要么全部省略,要么全部指定。如果全部省略,视图的属性列由查询中的SELECT子句中的属性列组成。

        下面三种情况必须明确指定组成视图的所有列名

        (1)某个目标列不是单纯的属性名,而是聚集函数或表达式。

        (2)多表连接时选出几个同名列作为视图的字段

        (3)需要在视图中为某个列启用新的名字。 

        例:

        建立信息系学生视图。

CREATE VIEW IS Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS';

        如果想使用自己定义视图的列名称(如:学号,姓名,年龄) 

        即:

create view is_student(学号,姓名,年龄) as select sno,sname,sage from student where sdept='IS'; select * from is_student         行列子集视图:

        若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码。称这类视图为行列子集视图。

        例,

        建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生(把谓词加入到更新操作中所以要加上 with check option)。

CREATE VIEWIS Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS WITH CHECK OPTION         with check option的作用        

        插入、修改和删除操作:DBMS自动加上Sdept=IS’的条件         例如:

        插入操作,DBMS自动检查Sdept属性值是否为'IS’,如果不是,则拒绝该插入操作;如果没有提供Sdept属性值,则自动定义Sdept为IS 

        例:

        定义一个反映学生出生年份的视图。

CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2022-Sage FROM Student         例:

        将学生的学号及他的平均成绩定义为一个视图。

CREATE VIEWS_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno  因为使用了聚合函数,所以视图的列表不能省略         例:

        建立名称为v1的视图,查询学生的学号,姓名,课程名,成绩。

两种方法: create view v1 as select student.sno,sname,cname,grade from student inner join sc on student.sno = sc.sno inner join course on sc.cno = course.cno 或 create view v1 as select student.sno,sname,cname,grade from student,course,sc where student.sno = sc.sno and sc.cno = course.cno select * from v1         例:

        建立名称为v2的视图,统计备选课程的课程号,选课人数和平均成绩

create view v2(课程号,选课人数,平均成绩) as select cno,count(*),avg(grade) from sc group by cno select * from v2         2、删除视图格式 DROP VIEW[CASCADE]         说明:

        。该语句从数据字典中删除指定的视图定义。使用CASCADE才能级联删除该视图和由它导出的视图。         。删除基表时,由该基表导出的所有视图定义都必须显式删除()。

        3、查询视图

        视图定义后,用户就可以像对基本表一样对视图进行查询了。(要求掌握视图消解过程,即把对视图的查询转换为对基本表的查询。)

        例:

                在信息系学生的视图中找出年龄小于20岁的学生。

SELECT Sno,Sage FROM IS Student WHERE Sage


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3