sql 2019 第07章.ppt

上传人(卖家):momomo 文档编号:7301106 上传时间:2023-11-20 格式:PPT 页数:19 大小:404KB
下载 相关 举报
sql 2019 第07章.ppt_第1页
第1页 / 共19页
sql 2019 第07章.ppt_第2页
第2页 / 共19页
sql 2019 第07章.ppt_第3页
第3页 / 共19页
sql 2019 第07章.ppt_第4页
第4页 / 共19页
sql 2019 第07章.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、第第7 7章章 视图管理视图管理u本章导读本章导读 本章介绍了视图的概念和优点,并结合实例介绍了在本章介绍了视图的概念和优点,并结合实例介绍了在SQL Server 2019SQL Server 2019中如何实现创建、修改和管理视图。中如何实现创建、修改和管理视图。u学习目的与要求学习目的与要求(1 1)了解视图的概念和优点)了解视图的概念和优点 (2 2)掌握在)掌握在SQL Server2019SQL Server2019中如何创建、修改和管理视图中如何创建、修改和管理视图 。1 1视图的概念视图的概念视图是一个虚拟表,用户可以根据其对数据的特殊要求,通过视图从一个表或多个表中提取一组记

2、录,在基本表的基础上自定义数据表格。2.2.视图的作用视图的作用(1)定制数据(2)简化操作(3)提供安全机制(4)改进性能7.1.1设计视图设计视图 7.1 设计与创建数据库视图设计与创建数据库视图7.1.2创建视图创建视图1 1语句格式语句格式CREATE VIEW CREATE VIEW 架构名架构名.视图名视图名 (列名列名 ,.n ).n )WITH ENCRYPTION WITH ENCRYPTION AS SQLAS SQL语句语句 WITH CHECK OPTION WITH CHECK OPTION 2 2功能功能()架构名:视图绑定的架构名称,默认为()架构名:视图绑定的架

3、构名称,默认为dbodbo。()()“WITHWITHENCRYPTIONENCRYPTION”选项对选项对CREATE VIEWCREATE VIEW的文本进的文本进行加密。行加密。()()“WITH CHECK OPTIONWITH CHECK OPTION”选项强制视图上执行的所选项强制视图上执行的所有数据修改语句都必须符合由有数据修改语句都必须符合由select_statementselect_statement设置的准则。设置的准则。通过视图修改数据行时,通过视图修改数据行时,WITH CHECK OPTIONWITH CHECK OPTION可确保提交修改后可确保提交修改后,仍可通

4、过视图看到修改的数据。,仍可通过视图看到修改的数据。7.1.2创建视图创建视图【例例7.17.1】创建一个视图创建一个视图studentviewstudentview,用于显示管理信息系,用于显示管理信息系所有学生的学号和姓名。所有学生的学号和姓名。方法一:使用方法一:使用Management StudioManagement Studio视图设计器创建视图视图设计器创建视图方法二:使用方法二:使用CREATE VIEWCREATE VIEW语句创建视图语句创建视图CREATE VIEW dbo.studentviewCREATE VIEW dbo.studentviewAS AS SELEC

5、T SELECT 学号学号,姓名姓名FROM dbo.SFROM dbo.SWHERE WHERE 系系=管理信息系管理信息系3视图设计器视图设计器【例例7.27.2】创建一个视图创建一个视图clanguageviewclanguageview用于显示所有选修用于显示所有选修了了C C语言语言课程的学生的学号、课程名和成绩,并按成绩从课程的学生的学号、课程名和成绩,并按成绩从高到低排列。高到低排列。方法一:使用方法一:使用Management StudioManagement Studio视图设计器创建视图视图设计器创建视图方法二:使用方法二:使用CREATE VIEWCREATE VIEW语

6、句创建视图语句创建视图CREATE VIEW dbo.clanguageviewCREATE VIEW dbo.clanguageviewAs As SELECT TOP 100 SC.SELECT TOP 100 SC.学号学号,C.,C.课程名课程名,SC.,SC.成绩成绩 FROM C INNER JOIN SC ON C.FROM C INNER JOIN SC ON C.课程号课程号 =SC.=SC.课课程号程号 WHERE C.WHERE C.课程名课程名 =C=C语言语言 ORDER BY SC.ORDER BY SC.成绩成绩 DESCDESC3视图设计器视图设计器1 1语句格

7、式语句格式ALTER VIEW ALTER VIEW 架构名架构名 .视图名视图名 (列名(列名 ,.n ),.n )WITH ENCRYPTION|VIEW_METADATA WITH ENCRYPTION|VIEW_METADATA AS AS SQLSQL语句语句 WITH CHECK OPTION WITH CHECK OPTION 2 2功能功能 ALTER VIEWALTER VIEW的用法和的用法和CREATE VIEWCREATE VIEW基本类似,各参数的基本类似,各参数的作用相同,参照作用相同,参照CREATE VIEWCREATE VIEW语句。语句。7.1.3修改视图修

8、改视图【例例7.37.3】修改视图修改视图clanguageviewclanguageview用于显示所有选修了用于显示所有选修了C C语言语言课程,并且是课程,并且是管理信息系管理信息系的学生的学号、课程的学生的学号、课程名、成绩和所在系,并按成绩从高到低排列。名、成绩和所在系,并按成绩从高到低排列。方法一:使用方法一:使用Management StudioManagement Studio视图设计器修改视图视图设计器修改视图 方法二:使用方法二:使用ALTER VIEWALTER VIEW语句修改视图语句修改视图ALTER VIEW dbo.clanguageviewALTER VIEW

9、dbo.clanguageview As As SELECT TOP 100 dbo.SC.SELECT TOP 100 dbo.SC.学号学号,dbo.SC.,dbo.SC.成绩成绩FROM dbo.C INNER JOIN dbo.SC ON dbo.C.FROM dbo.C INNER JOIN dbo.SC ON dbo.C.课程号课程号 =dbo.SC.dbo.SC.课程号课程号 INNER JOIN dbo.S ON dbo.SC.INNER JOIN dbo.S ON dbo.SC.学号学号 =dbo.S.=dbo.S.学学号号 WHERE dbo.C.WHERE dbo.C.课

10、程名课程名 =C=C语言语言 AND dbo.S.AND dbo.S.系系 =管理信息系管理信息系 ORDER BY dbo.SC.ORDER BY dbo.SC.成绩成绩 DESCDESC7.1.3修改视图修改视图1 1语句格式语句格式DROP VIEW DROP VIEW 架构名架构名 .视图名视图名 .,n .,n 2 2功能功能删除指定名称的视图。删除指定名称的视图。【例例7.47.4】删除视图删除视图clanguageviewclanguageview。方法一:使用方法一:使用Management StudioManagement Studio视图设计器删除视图视图设计器删除视图方法

11、二:使用方法二:使用DROP VIEWDROP VIEW语句删除视图语句删除视图DROP VIEW dbo.clanguageviewDROP VIEW dbo.clanguageview7.1.4删除视图删除视图语法格式:语法格式:sp_rename objname=sp_rename objname=对象名对象名,newname=,newname=新对象名新对象名,objtype=objtype=对象类型对象类型 【例例7.57.5】重命名视图重命名视图clanguageviewclanguageview为为cviewcview。方法一:使用方法一:使用Management StudioM

12、anagement Studio视图设计器为视图重命视图设计器为视图重命名名方法二:利用系统存储过程方法二:利用系统存储过程sp_renamesp_rename为视图重命名。为视图重命名。sp_rename sp_rename clanguageviewclanguageview,cviewcview7.1.5 重命名视图重命名视图【例例7.67.6】为为【例例7.37.3中修改好的视图中修改好的视图clanguageviewclanguageview,显,显示依赖关系。示依赖关系。方法:使用方法:使用Management StudioManagement Studio视图设计器为查看视图依视

13、图设计器为查看视图依赖关系赖关系7.1.6显示视图相关性显示视图相关性【例例7.77.7】利用例利用例7-27-2创建的视图创建的视图clanguageviewclanguageview,查询,查询C C语言语言课程成绩在课程成绩在8080分以上的学生的学号和成绩,并按成绩从分以上的学生的学号和成绩,并按成绩从高到低排列。高到低排列。SELECT SELECT 学号,成绩学号,成绩FROM clanguageviewFROM clanguageviewWHERE WHERE 成绩成绩80807.2管理视图管理视图7.2.1视图查询视图查询7.2管理视图管理视图【例例7.8】利用例利用例7-3修

14、改的视图修改的视图clanguageview,查询管理信息系选修了,查询管理信息系选修了“C语言语言”和和“数据库数据库”课程,并且两门课程成绩在课程,并且两门课程成绩在80分以上的学生分以上的学生的学号。的学号。方法一:方法一:SELECT a.学号学号FROM clanguageview a JOIN SC b on a.学号学号=b.学号学号and b.课程号课程号 in(select 课程号课程号 from CWHERE 课程名课程名=数据库数据库)and a.成绩成绩80 and b.成绩成绩80方法二:方法二:select a.学号学号 from dbo.clanguageview

15、 a,(select 学号学号 from dbo.SCwhere 课程号课程号 in(select 课程号课程号 from Cwhere 课程名课程名=数据库数据库)and成绩成绩80)bwhere a.成绩成绩80 and a.学号学号=b.学号学号通过视图更新数据的更新规则通过视图更新数据的更新规则 可以通过视图更新基础表的数据,修改方式与通过可以通过视图更新基础表的数据,修改方式与通过 UPDATEUPDATE、INSERT INSERT 和和 DELETEDELETE语句修改表中数据的方式一样。语句修改表中数据的方式一样。但是,在利用视图进行更新时有以下规则:但是,在利用视图进行更新时

16、有以下规则:任何修改任何修改(包括包括UPDATEUPDATE、INSERTINSERT和和DELETEDELETE语句语句)都只能引用都只能引用一个基表的列。一个基表的列。视图中被修改的列必须直接引用表列中的基础数据。它们视图中被修改的列必须直接引用表列中的基础数据。它们不能通过其他方式派生,例如通过:聚合函数不能通过其他方式派生,例如通过:聚合函数(AVG(AVG、COUNTCOUNT、SUMSUM、MINMIN、MAXMAX、GROUPINGGROUPING、STDEVSTDEV、STDEVPSTDEVP、VARVAR和和VARP)VARP);不能通过表达式并使用列计算出其他列。使用集合

17、运算符不能通过表达式并使用列计算出其他列。使用集合运算符(UNION(UNION、UNION ALLUNION ALL、CROSS OINCROSS OIN、EXCEPT EXCEPT 和和 INTERSECT)INTERSECT)形形成的列得出的计算结果不可更新。成的列得出的计算结果不可更新。正在修改的列不受正在修改的列不受 GROUP BYGROUP BY、HAVING HAVING 或或 DISTINCT DISTINCT 子句子句的影响。的影响。在基础表的列中修改的数据必须符合对这些列的约束,如在基础表的列中修改的数据必须符合对这些列的约束,如为空性、约束及为空性、约束及 DEFAUL

18、T DEFAULT 定义等。定义等。7.2.2视图更新视图更新通过视图插入数据通过视图插入数据)语法格式)语法格式INSERT INTO INSERT INTO 视图名视图名 (列名列名1 1,列名,列名2 2)VALUES(VALUES(列值列值1 1,列值,列值2 2,)2)2)注意注意7.2.2视图更新视图更新(2)(2)如果视图的定义中只选择了基础表的部分列,基础表如果视图的定义中只选择了基础表的部分列,基础表的其余列至少有一列不允许为空,且该列未设置默认值,则无的其余列至少有一列不允许为空,且该列未设置默认值,则无法通过视图插入数据。法通过视图插入数据。(3)(3)如果视图的定义中只

19、选择了基础表的部分列,基础表如果视图的定义中只选择了基础表的部分列,基础表的其余列都允许空,或有列不允许为空,但设置了默认值,此的其余列都允许空,或有列不允许为空,但设置了默认值,此时视图可以成功地向基础表插入数据。时视图可以成功地向基础表插入数据。(5)(5)如果在视图定义中使用了如果在视图定义中使用了WITH CHECK OPTIONWITH CHECK OPTION子句,则子句,则在视图上执行的数据插入语句必须定义视图的在视图上执行的数据插入语句必须定义视图的SELECTSELECT语句中所语句中所设定的条件。设定的条件。(4)(4)利用视图插入数据必须为不允许空值,并且没有利用视图插入

20、数据必须为不允许空值,并且没有 DEFAULT DEFAULT 定义的基础表中的所有列指定值。定义的基础表中的所有列指定值。(1)(1)插入视图的列值个数、数据类型应和视图定义的列数、插入视图的列值个数、数据类型应和视图定义的列数、基础表中对应的数据类型保持一致。基础表中对应的数据类型保持一致。【例【例7.9】创建一个视图创建一个视图courseview,用于显示每门课程的课程号、课程名和用于显示每门课程的课程号、课程名和任课教师名,并利用视图向课程表插入任课教师名,并利用视图向课程表插入一行数据。一行数据。CREATE VIEW courseviewASSELECT 课程号课程号,课程名课程

21、名,教师教师FROM CGOINSERT INTO courseview(课程号课程号,课程名课程名,教师教师)VALUES(C06,英语英语,王强王强)通过视图修改数据通过视图修改数据可以利用视图修改基础表中的数据列值,语法格式为:可以利用视图修改基础表中的数据列值,语法格式为:UPDATE UPDATE 视图名视图名SET SET 列列1=1=列值列值1 1,列,列2=2=列值列值2 2,WHERE WHERE 条件条件表达式表达式利用视图修改表数据时应注意以下几个方面。利用视图修改表数据时应注意以下几个方面。(1)若视图包含了多个基础表中的数据,且要更改的列属于同若视图包含了多个基础表中

22、的数据,且要更改的列属于同一个基础表,则可以通过视图更改对应基础表的列数据。一个基础表,则可以通过视图更改对应基础表的列数据。(2)若视图包含了多个基础表中的数据,且要更改的列分别属若视图包含了多个基础表中的数据,且要更改的列分别属于不同的基础表,则不能通过视图更改对应基础表的列数据。于不同的基础表,则不能通过视图更改对应基础表的列数据。(3)若视图包含了多个基础表中的数据,且要更改的列为多个若视图包含了多个基础表中的数据,且要更改的列为多个基础表的公共列,则不能通过视图更改对应基础表的列数据。基础表的公共列,则不能通过视图更改对应基础表的列数据。(4)若视图的定义中使用若视图的定义中使用了了

23、WITH CHECK OPTION选项,且要更改选项,且要更改的数据不符合视图定义中的限制条件时,则无法更改对应基础表的数据不符合视图定义中的限制条件时,则无法更改对应基础表的数据。的数据。7.2.2视图更新视图更新【例例7.107.10】创建一个视图创建一个视图scviewscview,用于显示学生选修课,用于显示学生选修课程的情况,返回学生的姓名、选修的课程名和成绩,并利用视程的情况,返回学生的姓名、选修的课程名和成绩,并利用视图将姚江的数据库课程成绩改为图将姚江的数据库课程成绩改为9595分。分。CREATE VIEW scviewCREATE VIEW scviewAS AS SELE

24、CT S.SELECT S.姓名姓名,C.,C.课程名课程名,SC.,SC.成绩成绩FROM C JOIN SC ON C.FROM C JOIN SC ON C.课程号课程号 =SC.=SC.课程号课程号 JOIN S ON S.JOIN S ON S.学号学号=SC.=SC.学号学号 GOGO UPDATE scview UPDATE scview SET SET 成绩成绩 =95=95WHERE (WHERE (姓名姓名 =姚江姚江)AND()AND(课程名课程名 =数据库数据库)7.2.2视图更新视图更新通过视图删除数据通过视图删除数据)语法格式)语法格式 DELETE FROM DELETE FROM 视图名视图名 WHERE WHERE 条件条件表达式表达式2)注意注意 (1)若删除语句的条件指定的列是视图未包含的列,则无法通过视图删除基础表的数据行。(2)若通过视图要删除的数据行不包含在视图的定义中,无论视图定义中是否设置了WITH CHECK OPTION选项,该数据行都不能成功删除。【例7.11】利用例7-9中创建的视图courseview,把英语这门课程记录删除。DELETE FROM courseview WHERE 课程名=英语7.2.2视图更新视图更新

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(sql 2019 第07章.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|