资源描述:
《第6章 视图与索引》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章视图与索引6.1视图6.2索引6.1视图1、视图概念视图是从一个或者多个表(或视图)中导出的虚表。视图也是一种安全机制,可以限制用户对数据的访问范围。表与视图的区别:相同点:表与视图都是关系表,都可以做查询和更新操作。不同点:表中数据可以永久性存储,而视图中只存储定义不存数据,是一个逻辑表。对视图可以进行查询操作,但更新数据时要受到限制。因为被更新的是视图对应的基表中的数据。2、创建视图(1)在SSMS中创建视图操作步骤如下:在“对象资源管理器”中展开“数据库”→选择数据库“PXSCJ”→选择“视
2、图”项→快捷菜单:新建视图(2)使用CREATEVIEW语句创建视图语法格式:CREATEVIEW视图名[(列名[,...n])]ASselect语句[WITHCHECKOPTION]其中:WITHCHECKOPTION指在视图上的修改要符合select中的限定条件。【例6.1】创建CS_XS视图,包括计算机专业各学生的信息。CREATEVIEWCS_XSASSELECT*FROMXSBWHERE专业='计算机'【例6.2】创建CS_KC视图,包括计算机专业各学生的学号、其选修的课程号及成绩。要保证对该
3、视图的修改紧限计算机专业这个条件。CREATEVIEWCS_KCASSELECTXSB.学号,课程号,成绩FROMXSB,CJBWHEREXSB.学号=CJB.学号AND专业='计算机'WITHCHECKOPTION【例6.3】创建视图CS_KC_AVG,其中包括计算机专业学生的平均成绩(score_avg)和学号(num)。CREATEVIEWCS_KC_AVG(num,score_avg)ASSELECT学号,AVG(成绩)FROMCJBGROUPBY学号3、查询视图【例6.4】查找平均成绩在80分
4、以上的学生的学号和平均成绩。(对XS_KC_AVG视图进行查询)SELECT*FROMXS_KC_AVGWHEREscore_avg>=804、更新视图可更新的视图有:创建视图的SELECT语句中没有聚合函数,且没有TOP、GROUPBY、UNION子句及DISTINCT关键字。创建视图的SELECT语句中不包含从基本表列通过计算所得的列。创建视图的SELECT语句的FROM子句中至少要包含一个基本表。在视图中插入记录【例6.5】向CS_XS视图中插入以下一条记录:('081115','刘明仪',1,'
5、1998-3-2','计算机',50,NULL)CS_XS视图依赖于一个基表XSB。INSERTINTOCS_XSVALUES('081115','刘明仪',1,'1998-3-2','计算机',50,NULL)SELECT*FROMCS_XSSELECT*FROMXSB注:在CS_XS视图和与其相关的基表XSB中,都多了一条记录。当视图所依赖的基本表有多个时,不能向该视图插入数据,因为这将会影响多个基表。(2)在视图中修改数据【例6.6】将CS_XS视图中所有学生的总学分增加8。(CS_XS依赖于一个
6、基本表:XSB)UPDATECS_XSSET总学分=总学分+8注:该语句实际上是将CS_XS视图所依赖的基本表XSB中所有专业为“计算机”的记录的总学分字段值在原来基础上增加8。【例6.7】将CS_KC视图中学号为081101的学生的101课程成绩改为90。(CS_KC依赖于两个基本表:XSB和CJB)UPDATECS_KCSET成绩=90WHERE学号='081101'AND课程号='101‘注:视图CS_KC依赖于两个基本表:XSB和CJB,对CS_KC视图的一次修改只能改变学号(源于XSB表)或者
7、课程号和成绩(源于CJB表)。以下的修改是错误的:UPDATECS_KCSET学号='081120',课程号='208'WHERE成绩=90(3)在视图中删除数据【例6.8】删除CS_XS中女同学的记录。(实际删除了计算机系的女生记录)DELETEFROMCS_XSWHERE性别=0(4)修改视图定义【例6.9】将CS_XS视图修改为只包含计算机专业学生的学号、姓名和总学分。ALTERVIEWCS_XSASSELECT学号,姓名,总学分FROMXSBWHERE专业='计算机'5、删除视图(1)通过SSM
8、S删除视图操作步骤:展开“数据库”→“视图”→选择需要删除的视图→快捷菜单:“删除”菜单项(2)T-SQL命令方式删除视图语法格式:DROPVIEW视图名[...,n]使用DROPVIEW可删除一个或多个视图。【例6.10】删除CS_XS和CS_KC视图DROPVIEWCS_XS,CS_KC6.2索引1、索引概念将表中一列或多列定义为索引键,按照一定顺序建立的由键值与记录的对应关系表为索引表。索引表由用户创建,又系统维护。索引的作用:快速存