《数据库应用基础视图学习教案.pptx》由会员分享,可在线阅读,更多相关《数据库应用基础视图学习教案.pptx(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库应用基础数据库应用基础(jch)视图视图第一页,共37页。2 2复习复习(fx)什么什么(shn me)是数据完整性?是数据完整性?数据完整性的分类?数据完整性的分类?第1页/共36页第二页,共37页。3 31 什么什么(shn me)是数是数据完整性?据完整性?数据数据数据数据(shj)(shj)的一致性和准的一致性和准的一致性和准的一致性和准确性确性确性确性实体实体(sht)完完整性整性域完整性域完整性引用完整性引用完整性用户自定义完用户自定义完整性整性数数据据完完整整性性的的分分类类行行列列表表表表第2页/共36页第三页,共37页。4 4本章本章(bn zhn)主要内容主要内容6.
2、1 6.1 视图视图(sht)(sht)概述概述6.2 6.2 创建视图创建视图(sht)(sht)6.3 6.3 视图视图(sht)(sht)的修改和删除的修改和删除第3页/共36页第四页,共37页。5 56.1 6.1 视图视图(sht)(sht)概述概述1 视图视图(sht)的基本的基本概念概念2 使用使用(shyng)视图的优点和视图的优点和缺点缺点(1 1)隐蔽数据库的复杂性)隐蔽数据库的复杂性(2 2)控制用户提取数据)控制用户提取数据(3 3)简化数据库用户管理)简化数据库用户管理(4 4)改进性能)改进性能第4页/共36页第五页,共37页。6 61 视图视图(sht)的基本的基
3、本概念概念 数据视图是另一种在一个或多个数据视图是另一种在一个或多个数据表上观察数据表上观察(gunch)数据的途径,数据的途径,可以把数据视图看作是一个能把焦点可以把数据视图看作是一个能把焦点定在用户感兴趣的数据上的监视器,定在用户感兴趣的数据上的监视器,用户看到的是实时数据用户看到的是实时数据 视图可以视图可以(ky)被看成是虚拟被看成是虚拟表或存储查询,用户可以表或存储查询,用户可以(ky)通通过视图来插入、更改和删除数据过视图来插入、更改和删除数据 第5页/共36页第六页,共37页。7 7例例6-16-1:图书管理员现在需要查询图书的借用历史:图书管理员现在需要查询图书的借用历史记录,
4、确认图书的借用情况,目前有几本图书被记录,确认图书的借用情况,目前有几本图书被借出,由哪些人借用,借用日期是何时。图书的借出,由哪些人借用,借用日期是何时。图书的名称,借阅人的名字以及相关借用日期,分别存名称,借阅人的名字以及相关借用日期,分别存在三个不同的表在三个不同的表book_infobook_info、borrower_infoborrower_info和和lend_listlend_list内,给内,给SQLSQL查询带来的一定的复杂性。查询带来的一定的复杂性。采用视图的方法,能够很好的解决该问题。视图采用视图的方法,能够很好的解决该问题。视图可以使得所有需要显示可以使得所有需要显示
5、(xinsh)(xinsh)的图书借用信息的图书借用信息好像都记录在一张表内一样。下面建立系统中的好像都记录在一张表内一样。下面建立系统中的视图视图lendbooklendbook:第6页/共36页第七页,共37页。8 8useLibrary_DBgoCREATEVIEWlendbookASSELECTlend_list.book_id,lend_list.borrower_id,lend_list.lend_date,lend_list.back_date,book_info.nameASbookname,borrower_info.nameFROMlend_listINNERJOINboo
6、k_infoONlend_list.book_id=book_info.book_idINNERJOINborrower_infoONlend_list.borrower_id=borrower_info.id需要查询所需的图书借阅需要查询所需的图书借阅(ji yu)历历史记录时,只需执行如下查询语句:史记录时,只需执行如下查询语句:SELECT*FROM lendbook 第7页/共36页第八页,共37页。9 92 使用视图的优点使用视图的优点(yudin)和和缺点缺点(1 1)隐蔽数据库的复杂性)隐蔽数据库的复杂性 开发者可以在不影响用户开发者可以在不影响用户(yngh)(yngh)使使用
7、数据库的情况下可以改变数据库内容,用数据库的情况下可以改变数据库内容,即使在基表发生更改或重新组合的情况下,即使在基表发生更改或重新组合的情况下,用户用户(yngh)(yngh)还能够通过视图获得一致和还能够通过视图获得一致和非变化的数据。非变化的数据。第8页/共36页第九页,共37页。10102 使用使用(shyng)视图的优点视图的优点和缺点和缺点(2 2)控制用户提取数据)控制用户提取数据 通过将某些不需要的、敏感的或是通过将某些不需要的、敏感的或是不适当的数据控制在视图之外,可以实不适当的数据控制在视图之外,可以实现为用户定制其个人所使用的表。实际现为用户定制其个人所使用的表。实际上这
8、也是一种上这也是一种(y zhn)(y zhn)安全机制。用安全机制。用户可以访问某些数据,进行查询和修改,户可以访问某些数据,进行查询和修改,但是表或数据库的其余部分是不可见的,但是表或数据库的其余部分是不可见的,也不能进行访问。也不能进行访问。第9页/共36页第十页,共37页。11112 使用视图的优点使用视图的优点(yudin)和缺和缺点点(3 3)简化数据库用户)简化数据库用户(yngh)(yngh)管理管理 通过定义不同的视图及有选择地授予通过定义不同的视图及有选择地授予视图上的权限,可以将用户视图上的权限,可以将用户(yngh)(yngh)、组、组或角色限制在不同的数据子集内。或角
9、色限制在不同的数据子集内。第10页/共36页第十一页,共37页。12122 使用使用(shyng)视图的优点和缺视图的优点和缺点点(3 3)简化数据库用户)简化数据库用户(yngh)(yngh)管理管理 l可以将访问限制在基表中行的子集内。可以将访问限制在基表中行的子集内。l可以将访问限制在基表中列的子集内。可以将访问限制在基表中列的子集内。l可以将访问限制在基表中列和行的子集内。可以将访问限制在基表中列和行的子集内。l可以将访问限制在符合多个基表联接的行内。可以将访问限制在符合多个基表联接的行内。l可以将访问限制在基表中数据的统计汇总内。可以将访问限制在基表中数据的统计汇总内。l可以将访问限
10、制在另一个视图可以将访问限制在另一个视图(sht)的子集内的子集内或视图或视图(sht)和基表组合的子集内。和基表组合的子集内。例:定义一个视图,其中只含有例:定义一个视图,其中只含有管理类书籍或计算机应用类书籍管理类书籍或计算机应用类书籍的行,向用户隐藏有关其它类型的行,向用户隐藏有关其它类型书籍的信息。书籍的信息。例:定义一个视图,其中含有例:定义一个视图,其中含有booksbooks表表中的所有行,但省略了中的所有行,但省略了 price price 和和 discount discount 列等敏感信息。列等敏感信息。例:定义一个视图,其中只含有管理类例:定义一个视图,其中只含有管理类
11、书籍或计算机应用类书籍的行,同时含书籍或计算机应用类书籍的行,同时含有有booksbooks表中除了表中除了price price 和和 discount discount 列的其他列,隐藏了其他书籍信息列的其他列,隐藏了其他书籍信息和敏感列的信息。和敏感列的信息。例:定义一个视图,它联接表例:定义一个视图,它联接表 booksbooks和和authorsauthors表以显示作者姓名及其撰写的书表以显示作者姓名及其撰写的书籍。该视图隐藏作者的个人信息以及著籍。该视图隐藏作者的个人信息以及著作的财务信息。作的财务信息。例:定义一个视图,其中只含有例:定义一个视图,其中只含有每类书籍的平均价格。
12、每类书籍的平均价格。第11页/共36页第十二页,共37页。13132 使用视图的优点使用视图的优点(yudin)和和缺点缺点(4 4)改进性能)改进性能 通过在视图中存储复杂查询的运算结通过在视图中存储复杂查询的运算结果并为其他查询提供这些摘要性的结果使果并为其他查询提供这些摘要性的结果使数据库的性能得到提高,视图还具备分割数据库的性能得到提高,视图还具备分割数据的功能,而且数据的功能,而且(r qi)(r qi)可以把分割后可以把分割后独立的数据放置在不同的计算机上。独立的数据放置在不同的计算机上。第12页/共36页第十三页,共37页。14146.2 6.2 创建创建(chungjin)(c
13、hungjin)视视图图1 视图视图(sht)的创的创建建2 视图视图(sht)定义信息查定义信息查询询(1 1)使用)使用Microsoft SQL Server Microsoft SQL Server Management Studio Management Studio管理界面管理界面(2 2)通过执行系统存储过程)通过执行系统存储过程 查看视图的定义信息查看视图的定义信息 第13页/共36页第十四页,共37页。15151 视图视图(sht)的创建的创建CREATEVIEW.view_name(column,.n)WITHENCRYPTIONASselect_statementWITH
14、CHECKOPTION创建的视图的名称创建的视图的名称视图中列的字段名视图中列的字段名对含有对含有CREATE VIEW正文的正文的syscomments表项进行加密表项进行加密 定义视图的定义视图的select语句语句强制对视图执行的强制对视图执行的所有数据修改语句遵照在所有数据修改语句遵照在定义视图的定义视图的select statement中设置的条件中设置的条件 第14页/共36页第十五页,共37页。1616例例6-26-2:本例建立的是系统中另外一个非:本例建立的是系统中另外一个非常有用的视图常有用的视图book_info_viewbook_info_view,通过这个,通过这个视图
15、,系统可以很容易的从表视图,系统可以很容易的从表book_infobook_info、classclass和和book_statebook_state中查询完整的图书中查询完整的图书(tsh)(tsh)信息,以方便显示给用户进行查信息,以方便显示给用户进行查看。看。第15页/共36页第十六页,共37页。1717use Library_DBuse Library_DBgogoCREATE VIEW book_info_view CREATE VIEW book_info_view ASASSELECT SELECT book_info.book_id,book_info.name,book_in
16、fo.author,bookbook_info.book_id,book_info.name,book_info.author,book_info.publish,_info.publish,book_info.ISBN,book_info.introduction,book_info.language,book_inbook_info.ISBN,book_info.introduction,book_info.language,book_info.price,fo.price,book_info.pressmark,class.name AS classname,book_state.lef
17、tnum,book_info.pressmark,class.name AS classname,book_state.leftnum,book_state.number,book_info.class_idbook_state.number,book_info.class_idFROM book_info FROM book_info INNER JOIN book_state ON book_info.book_id=INNER JOIN book_state ON book_info.book_id=book_state.book_id book_state.book_id INNER
18、JOIN class ON book_info.class_id=class.class_id INNER JOIN class ON book_info.class_id=class.class_id 第16页/共36页第十七页,共37页。18182 视图定义视图定义(dngy)信息查询信息查询(1 1)使用)使用Microsoft SQL Server Microsoft SQL Server Management StudioManagement Studio管理界面管理界面 运行运行“Microsoft SQL Server“Microsoft SQL Server Managemen
19、t StudioManagement Studio管理界面管理界面”,在,在Library_DBLibrary_DB下的视图下的视图(sht)(sht)中选择中选择dbo.book_info_viewdbo.book_info_view,单击鼠标右键,在,单击鼠标右键,在弹出的快捷菜单中讯则弹出的快捷菜单中讯则“属性属性”项,便可项,便可查看视图查看视图(sht)book_info_view(sht)book_info_view属性属性 第17页/共36页第十八页,共37页。19192 视图定义视图定义(dngy)信息查询信息查询(2 2)通过执行系统存储)通过执行系统存储(cn ch)(cn
20、 ch)过程过程查看视图的定义信息查看视图的定义信息 可以通过执行系统存储可以通过执行系统存储(cn ch)(cn ch)过过程程sp_helptextsp_helptext查看视图的定义信息查看视图的定义信息 EXEC sp_helptext objname EXEC sp_helptext objname用户需要用户需要(xyo)查看的查看的视图名称视图名称 第18页/共36页第十九页,共37页。20202 视图视图(sht)定义信息查询定义信息查询(2 2)通过执行)通过执行(zhxng)(zhxng)系统存储过程查系统存储过程查看视图的定义信息看视图的定义信息 例:例:EXEC sp_
21、helptext EXEC sp_helptext book_info_view book_info_view 第19页/共36页第二十页,共37页。21212 视图定义视图定义(dngy)信息查询信息查询(2 2)通过)通过(tnggu)(tnggu)执行系统存储过程查执行系统存储过程查看视图的定义信息看视图的定义信息 可以通过可以通过(tnggu)(tnggu)运行系统存储过运行系统存储过程程sp_dependssp_depends来获得视图对象的参照对象来获得视图对象的参照对象和字段和字段 EXEC sp_depends objname EXEC sp_depends objname 用
22、户需要查看用户需要查看(chkn)的视的视图名称图名称 第20页/共36页第二十一页,共37页。22222 视图定义视图定义(dngy)信息查询信息查询(2 2)通过执行系统存储过程查看)通过执行系统存储过程查看(chkn)(chkn)视图的定义信息视图的定义信息 例:例:EXEC sp_depends book_info_view EXEC sp_depends book_info_view 第21页/共36页第二十二页,共37页。23232 视图定义信息视图定义信息(xnx)查询查询(2 2)通过执行系统存储过程查看)通过执行系统存储过程查看(chkn)(chkn)视图的定义信息视图的定义
23、信息 例:查询数据库中定义的所有视图例:查询数据库中定义的所有视图 EXEC sp_depends EXEC sp_depends book_info_view book_info_view 第22页/共36页第二十三页,共37页。2424在定义视图时使用加密语句在定义视图时使用加密语句例例6-36-3:通过:通过WITH ENCRYPTIONWITH ENCRYPTION子句创建子句创建(chungjin)(chungjin)一个与例一个与例6-26-2相同的加密视图,相同的加密视图,将加密的新视图取名为将加密的新视图取名为book_info_view2book_info_view2。第23
24、页/共36页第二十四页,共37页。2525use Library_DBuse Library_DBgogoCREATE VIEW book_info_view2CREATE VIEW book_info_view2WITH ENCRYPTION WITH ENCRYPTION AS AS SELECT SELECT book_info.book_id,book_info.name,book_info.author,book_info.book_id,book_info.name,book_info.author,book_info.publish,book_info.publish,book_
25、info.ISBN,book_info.introduction,book_info.ISBN,book_info.introduction,book_info.language,book_info.price,book_info.language,book_info.price,book_info.pressmark,class.name AS book_info.pressmark,class.name AS classname,book_state.leftnum,classname,book_state.leftnum,book_state.number,book_info.class
26、_idbook_state.number,book_info.class_idFROM book_info FROM book_info INNER JOIN book_state ON book_info.book_id=book_state.book_id INNER JOIN book_state ON book_info.book_id=book_state.book_id INNER JOIN class ON book_info.class_id=class.class_idINNER JOIN class ON book_info.class_id=class.class_id通
27、过使用通过使用WITH ENCRYPTION WITH ENCRYPTION 子句,用户将子句,用户将无法无法(wf)(wf)象浏览视图象浏览视图book_info_viewbook_info_view的的视图定义一样浏览视图视图定义一样浏览视图book_info_view2book_info_view2的视图定义的视图定义第24页/共36页第二十五页,共37页。26266.3 6.3 视图的修改视图的修改(xigi)(xigi)和删除和删除1 视图视图(sht)的修的修改改2 视图视图(sht)的删的删除除 3 通过视图修改数据通过视图修改数据 第25页/共36页第二十六页,共37页。272
28、71 视图视图(sht)的修改的修改ALTERVIEW.view_name(column,.n)WITHENCRYPTIONASselect_statementWITHCHECKOPTION第26页/共36页第二十七页,共37页。2828例例6-46-4:对例对例6-46-4创建的视图创建的视图book_info_view2book_info_view2进行修改,将该视图中的进行修改,将该视图中的记录的字段减少为图书名称、所属分类名、记录的字段减少为图书名称、所属分类名、剩余库存剩余库存(kcn)(kcn)和总数量。和总数量。第27页/共36页第二十八页,共37页。2929use Librar
29、y_DBuse Library_DBgogoALTER VIEW book_info_view2ALTER VIEW book_info_view2AS AS SELECT SELECT book_info.name,class.name AS book_info.name,class.name AS classname,book_state.leftnum,book_state.numberclassname,book_state.leftnum,book_state.numberFROM book_info FROM book_info INNER JOIN book_state ON b
30、ook_info.book_id=INNER JOIN book_state ON book_info.book_id=book_state.book_id book_state.book_id INNER JOIN class ON book_info.class_id=class.class_idINNER JOIN class ON book_info.class_id=class.class_id第28页/共36页第二十九页,共37页。30302 视图视图(sht)的删除的删除DROPVIEW.view_name(column,.n)要删除要删除(shnch)的的视图名视图名第29页/
31、共36页第三十页,共37页。3131例例6-56-5:删除:删除(shnch)Library_DB(shnch)Library_DB数据库数据库中的视图中的视图book_info_view2book_info_view2。DROP VIEW dbo.book_info_view2DROP VIEW dbo.book_info_view2第30页/共36页第三十一页,共37页。32323 通过视图修改通过视图修改(xigi)数据数据在视图中修改的数据在视图中修改的数据(shj)操作都将导致对基操作都将导致对基表数据表数据(shj)的修改的修改在通过视图修改在通过视图修改(xigi)数据时应注意以
32、下几数据时应注意以下几个问题:个问题:l不能对某些特别列进行操作;不能对某些特别列进行操作;l不能在视图中修改在视图中没有参照的列;不能在视图中修改在视图中没有参照的列;l不能在含有视图中没有参照的列的表中利用视图不能在含有视图中没有参照的列的表中利用视图作插入操作;作插入操作;l不能影响多于一个的基表;不能影响多于一个的基表;l如果某一视图在定义中指定了如果某一视图在定义中指定了WITH CHECK OPTION选项,则进行数据修改时将进行验证。选项,则进行数据修改时将进行验证。第31页/共36页第三十二页,共37页。3333例例6-66-6:通过:通过WITH CHECK OPTIONWI
33、TH CHECK OPTION子句将强制子句将强制对视图所作的所有修改都满足定义视图的对视图所作的所有修改都满足定义视图的select _statementselect _statement中指定中指定(zhdng)(zhdng)的条件。的条件。第32页/共36页第三十三页,共37页。3434CREATE VIEW lendbook2CREATE VIEW lendbook2AS SELECTAS SELECTbook_id,borrower_id,lend_date,back_datebook_id,borrower_id,lend_date,back_datefrom lend_listf
34、rom lend_listwhere book_id=0284where book_id=0284WITH CHECK OPTIONWITH CHECK OPTION通过通过(tnggu)(tnggu)查询语句查询语句:use Library_DBuse Library_DBgogoSELECT SELECT book_id,borrower_id,lend_date,back_datebook_id,borrower_id,lend_date,back_dateFROM lend_listFROM lend_listWHERE book_id=0284WHERE book_id=0284第3
35、3页/共36页第三十四页,共37页。3535通过通过UPDATEUPDATE子句将子句将borrower_idborrower_id为为970890970890的借阅记录的的借阅记录的back_dateback_date由原来由原来(yunli)(yunli)的的NULLNULL改为改为2010-4-222010-4-22。UPDATE lendbook2UPDATE lendbook2SET back_date=2010-4-22SET back_date=2010-4-22WHERE borrower_id=970890WHERE borrower_id=970890第34页/共36页第三
36、十五页,共37页。3636通过通过UPDATEUPDATE子句子句(z j)(z j)将将broorwer_idbroorwer_id为为981123981123的借书记录中的借书记录中的图书编号的图书编号book_idbook_id由原来的由原来的02840284改为改为0234 0234。UPDATE lendbook2UPDATE lendbook2SET book_id=0234SET book_id=0234WHERE borrower_id=981123 WHERE borrower_id=981123 第35页/共36页第三十六页,共37页。3737感谢您的观看感谢您的观看(gunkn)。第36页/共36页第三十七页,共37页。