资源描述:
《天学通Oracle第二版]第7章视.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章视图视图是数据库中特有的对象。视图用于存储查询,但不会存储数据(物化视图除外)。这是视图和数据表的重要区别。可以利用视图进行查询、插入、更新和删除数据。Oracle中有4种视图:关系视图;内嵌视图;对象视图;物化视图。7.1关系视图关系视图是四种视图中最简单,同时也是最常用的视图。读者可以将关系视图看作对简单或复杂查询的定义。它的输出可以看作一个虚拟的表,该表的数据是由其他基础数据表提供的。由于关系视图并不存储真正的数据,因此占用数据库资源也较少。7.1.1建立关系视图1.创建关系视图createviewvw_employeesasselectemp
2、loyee_id,last_name
3、
4、first_nameasemployee_name,province
5、
6、'-'
7、
8、cityaslocationfromemployees2.查看视图定义selecttextfromuser_viewswhereview_name='VW_EMPLOYEES'3.查看视图内容select*fromvw_employees7.1.2修改/删除视图1.修改视图(为视图添加新列SALARY)createorreplaceviewvw_employeesasselectemployee_id,last_name
9、
10、first_
11、nameasemployee_name,province
12、
13、'-'
14、
15、cityaslocation,salaryfromemployees2.删除视图dropviewvw_employees7.1.3联接视图在范例7-1中所创建的视图是基于单个基础表的。而在实际应用中,大多数的视图是较为复杂的查询。这也是视图的一大优势,封装复杂查询。createorreplaceviewvw_employee_salaryasselecte.employee_id,e.last_name
16、
17、e.first_nameemployee_name,e.salary+s.tota
18、l_price*0.1salaryfromemployeese,employee_salesswheree.employee_id=s.sale_byands.sale_month='3月'7.1.4编译视图视图依赖于基础表的存在而存在,当基础表进行了结构上的调整,有可能会对视图产生影响。如欲再次使用该视图,必须对视图进行重新编译。alterviewvw_employee_salarycompile7.1.5使用force选项强制创建视图有时,视图的基础表还没有创建,但是仍然希望能够创建基于不存在的数据表的视图。这是因为,数据表的预期创建者和视图的创建者并
19、非同一用户。视图创建者不希望等待基础表创建者的工作完成之后才进行自己的工作。假设,此时视图创建者已经对基础表的结构有了清晰的概念,例如books将被创建,以存储图书信息。createorreplaceforceviewvw_booksasselectbook_name,authorfrombooks7.1.6利用视图更新数据表通过视图,不但可以对基础表中的数据进行查询,而且可以对数据表中的数据进行更新。更新的方式非常简单——直接更新视图中的数据即可将对基础表进行相应的更新。当然,并非视图中的所有列都能够进行更新,并反映到基础表中。只有那些直接由基础表获得
20、的列可以进行更新操作,如范例7-5中的列book_name和列author;而由基础表中的数据经过运算获得,仅凭视图中的数据无法判断基础表中的数据情况的列,不能进行更新,vw_employees中的name列。selecttable_name,column_name,updatable,insertable,deletablefromuser_updatable_columnswheretable_name='VW_BOOKS‘insertintovw_booksvalues('千年一叹','余秋雨')7.1.7withcheckoption选项创建视图时
21、,withcheckoption是常用的选项之一。一旦使用了该选项,那么Oracle将保证视图在数据更新之后与更新之前的结果集相同。createorreplaceviewvw_booksasselect*frombookswherebook_id=5updatevw_bookssetbook_id=6createorreplaceviewvw_booksasselect*frombookswherebook_id=5withcheckoption7.1.8关系视图小结1.保障数据安全性2.数据整合3.数据透明性7.2内嵌视图关系视图作为查询定义,一旦创建,
22、即可存在于数据库中,并可被多次使用。但有时,需要某个视图作为过渡结