- 1、本文档共94页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.3.3查询视图 1. SELECT语句查询视图 【例4.51】查找计算机专业的学生学号和选修的课程号。 SELECT XH,KCH FROM CS_KC; 【例4.52】查找平均成绩在80分以上的学生的学号和平均成绩。 本例首先创建学生平均成绩视图XS_KC_AVG,包括学号(在视图中列名为 num)和平均成绩(在视图中列名为score_avg)。 CREATE OR REPLACE VIEW XS_KC_AVG ( num,score_avg ) AS SELECT XH,AVG(CJ) FROM XS_KC GROUP BY XH; 再对XS_KC_AVG视图进行查询。 SELECT * FROM XS_KC_AVG WHERE score_avg=80; 4.3.3查询视图 【例4.52】查找平均成绩在80分以上的学生的学号和平均成绩。 执行结果为: num score_avg 061110 91 061201 80 061203 87 061204 91 061216 81 061220 82 061241 90 4.3.4 更新视图 通过更新视图(包括插入、修改和删除)数据可以修改基表数据。但并不是所有 的视图都可以更新,只有对满足可更新条件的视图,才能进行更新。 1. 可更新视图 要通过视图更新基表数据,必须保证视图是可更新视图。一个可更新视图满足以 下条件: (1) 没有使用连接函数、集合运算函数和组函数; (2) 创建视图的SELECT语句中没有聚合函数且没有GROUP BY、ONNECT BY、START WITH子句及DISTINCT关键字; (3) 创建视图的SELECT语句中不包含从基表列通过计算所得的列; (4) 创建视图没有包含只读属性。 【例4.53】在XSCJ数据库中使用以下语句创建可更新视图CS_XS1。 CREATE OR REPLACE VIEW CS_XS1 AS SELECT * FROM XS WHERE ZYM= 计算机; 4.3.4 更新视图 2. 插入数据 使用INSERT语句通过视图向基本表插入数据。 【例4.54】向CS_XS1视图中插入一条记录: ( ‘001115’ , ‘刘明仪’, ‘计算机’, 男,‘1984-3-2’, 50 , ‘三好学生’ ) INSERT INTO CS_XS1 VALUES(001115, 刘明仪,计算机,’男’, TO_DATE(,’YYYYMMDD’),50, ‘三好学生’); 使用SELECT语句查询CS_XS1依据的基本表XS: SELECT * FROM XS; 将会看到该表已添加了学号为001115的数据行。 4.3.4 更新视图 3. 修改数据 使用UPDATE语句可以通过视图修改基本表的数据。 【例4.55】将CS_XS视图中所有学生的总学分增加8。 UPDATE CS_XS SET 总学分=总学分+ 8; 该语句实际上是将CS_XS视图所依赖的基本表XS中所有专业名为“计算机”的记录的总学分字段值在原来基础上增加8。 若一个视图依赖于多个基本表,则一次修改该视图只能变动一个基本表的数据。 【例4.56】将CS_KC视图中学号为001101的学生的101课程成绩改为90。 UPDATE CS_KC SET CJ=90 WHERE XH=001101 AND KCH=101; 4.2.3查询对象 前面介绍了SELECT的选择列和行,这里介绍SELECT查询的对象(即数据源) 的构成形式。 【例4.24】查找001102号同学所选修的全部课程的同学的学号。 本例即要查找这样的学号y,对所有的课程号x,若001102号同学选修了该课, 那么y也选修了该课。 SELECT DISTINCT XH FROM XS_KC CJ1 WHERE NOT EXISTS
文档评论(0)