




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、项目项目6 学生成绩管理数据库视图及学生成绩管理数据库视图及索引的应用索引的应用1. 能利用能利用SSMS进行视图的创建、管理。进行视图的创建、管理。2. 能利用能利用T-SQL语句进行视图的创建、管理。语句进行视图的创建、管理。3. 能利用能利用SSMS进行索引的创建、管理。进行索引的创建、管理。4. 能利用能利用T-SQL语句进行索引的创建、管理。语句进行索引的创建、管理。5能结合实际需求灵活地运用视图、索引,提高数据的存取性能能结合实际需求灵活地运用视图、索引,提高数据的存取性能和操作速度。和操作速度。能力目标能力目标项项目目描描述述数据表的设计要满足范式的要求,因而会造成一个实体的所有
2、信息保存在多个表中。当用户检索数据时,往往在一个表中不能够得到想要的所有信息,而使查询工作显得较为繁琐;或者,出于安全,用户只允许访问一个表中部分数据。因而,如何让用户安全、方便、快捷地浏览用户感兴趣的数据,就成了一个问题,而要较好地解决这个问题,则需要引入视图。本项目首先介绍视图的概念、然后通过学生成绩管理数据库视图的创建、管理,学会在SSMS环境及用T-SQL命令创建、管理视图的方法。为了提高查询的速度,充分发挥数据库的优越性,就需要引入索引。所以,接下来介绍索引的概念、索引的创建及管理的方法。学学习习任任务务任务6.1:视图的概述任务6.2:学生成绩管理数据库视图的创建任务6.3:学生成
3、绩管理数据库视图的管理任务6.4:学生成绩管理数据库索引的创建和管理项目描述项目描述及及学习任务学习任务6.16.1视图的概述视图的概述视图是关系数据库系统提供给用户以多角度观察数据库中数据的非常重要的机制。视图是关系数据库系统提供给用户以多角度观察数据库中数据的非常重要的机制。引入视图,可以使得查询更为简捷、方便,同时更加的安全。本学习任务主要介引入视图,可以使得查询更为简捷、方便,同时更加的安全。本学习任务主要介绍视图的概念、作用及使用视图的注意点。绍视图的概念、作用及使用视图的注意点。任务描述任务描述 6.1.1 视图的概述视图的概述 视图视图是一种数据库是一种数据库对象对象,可以看作定
4、义在,可以看作定义在SQL Server上的虚拟表,视图正上的虚拟表,视图正如其名字的含义一样,是一个移动的窗口,通过它用户可以方便地看到感兴趣的如其名字的含义一样,是一个移动的窗口,通过它用户可以方便地看到感兴趣的数据数据,而不需要知道底层表结构及其之间的关系。而不需要知道底层表结构及其之间的关系。 视图是一个虚拟表视图是一个虚拟表,是从数据库中一个或多个表中导出来的表,也可以来自,是从数据库中一个或多个表中导出来的表,也可以来自另外的视图,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的另外的视图,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的行和列数据,行和列数据来
5、自由定义视图的查询所引用的表,并且在引用视图时行和列数据,行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基本表来说,视图的作用类似于筛选。动态生成。对其中所引用的基本表来说,视图的作用类似于筛选。 视图由视图名和视图定义两部分组成视图由视图名和视图定义两部分组成,但是,数据库中只存储视图的定义,但是,数据库中只存储视图的定义,并不存储视图对应的数据,这些数据仍放在原来的基本表中。所以基本表中数据并不存储视图对应的数据,这些数据仍放在原来的基本表中。所以基本表中数据发生变化,从视图中查询的数据也将随之变化。发生变化,从视图中查询的数据也将随之变化。视图常见的示
6、例有:视图常见的示例有:(1)基本表的行和列的子集。)基本表的行和列的子集。(2)两个或多个基本表的连接。)两个或多个基本表的连接。(3)基本表和另一个视图或视图子集的结合。)基本表和另一个视图或视图子集的结合。(4)基本表的统计概要。)基本表的统计概要。6.1.1 视图的概述视图的概述 【例例6.1】创建一个学生姓名查询视图:创建一个学生姓名查询视图:VIEW_name,包含了学号、姓名、,包含了学号、姓名、课名、成绩等信息。课名、成绩等信息。CREATE VIEW VIEW_nameASSELECT 学生表学生表.学号学号,姓名姓名,课名课名,成绩成绩 from 学生表学生表 a, 选课表
7、选课表 b ,课程表课程表 cWhew a.学号学号=b.学号学号 and b.课程号课程号=c.课程号课程号 执行上述命令后,则创建了视图执行上述命令后,则创建了视图VIEW_name。若以后要若以后要查询查询“王小芳王小芳”的各门课成绩,就可以输入的各门课成绩,就可以输入:SELECT * FROMVIEW_name where 姓名姓名=王小芳王小芳查找查找“李铁成李铁成”的各门成绩,就可以在查询编辑器中输入的各门成绩,就可以在查询编辑器中输入:SELECT * FROMVIEW_name where 姓名姓名=李铁成李铁成若没有创建该视图,则查找若没有创建该视图,则查找“李铁成李铁成”
8、的各门成绩,要编写:的各门成绩,要编写:SELECT 学生表学生表.学号学号,姓名姓名,课名课名,成绩成绩 from 学生表学生表 a, 选课表选课表 b ,课程表课程表 cWhew a.学号学号=b.学号学号 and b.课程号课程号=c.课程号课程号 and 姓名姓名=李铁成李铁成6.1.2 视图的作用视图的作用视图具有以下几个优点:视图具有以下几个优点:(1)能分割数据,简化结构。可以通过)能分割数据,简化结构。可以通过select和和where来定义视图,从而可以来定义视图,从而可以分割数据基表中某些对于用户不关心的数据,使用户把注意力集中到所关心的数分割数据基表中某些对于用户不关心的
9、数据,使用户把注意力集中到所关心的数据列,进一步简化浏览数据的工作。据列,进一步简化浏览数据的工作。(2)简化查询。可以将一些经常用到的查询语句定义为视图,这样不需要进行)简化查询。可以将一些经常用到的查询语句定义为视图,这样不需要进行重复编写复杂的查询语句,直接调用视图就能实现。重复编写复杂的查询语句,直接调用视图就能实现。 (3)为数据提供一定的逻辑独立性。如果为某一个基表定义一个视图,即使以)为数据提供一定的逻辑独立性。如果为某一个基表定义一个视图,即使以后基本表的内容发生改变,也不会影响后基本表的内容发生改变,也不会影响“视图定义视图定义”所得到的数据。所得到的数据。(4)提供自动的安
10、全保护功能。)提供自动的安全保护功能。 视图能像基本表一样授予或撤消访问许可权。视图能像基本表一样授予或撤消访问许可权。(5)适当的利用视图可以更清晰的表达查询。)适当的利用视图可以更清晰的表达查询。6.1.3 使用视图要注意的地方使用视图要注意的地方创建视图时要注意以下几点:创建视图时要注意以下几点:(1)视图的名称必须是唯一的,而且视图的名称不能与当前数据库中的表的名)视图的名称必须是唯一的,而且视图的名称不能与当前数据库中的表的名称重复。称重复。(2)只能在当前数据库中创建视图。)只能在当前数据库中创建视图。(3)一个视图最多只能引入)一个视图最多只能引入1024列。列。(4)如果视图中
11、某一列是函数、数学表达式、常量、或者来自多个表的列名相)如果视图中某一列是函数、数学表达式、常量、或者来自多个表的列名相同,则必须为视图中的列定义名称。同,则必须为视图中的列定义名称。(5)如果视图所基于的数据库表被删除了,那么该视图不能再使用。)如果视图所基于的数据库表被删除了,那么该视图不能再使用。6.2 6.2 学生成绩管理数据库视图的创建学生成绩管理数据库视图的创建视图在数据库中应用很广,用户可以根据自己的需要在视图在数据库中应用很广,用户可以根据自己的需要在SQL Server Management Studio中和中和T-SQL命令两种方法创建视图。本学习任务主要介绍命令两种方法创
12、建视图。本学习任务主要介绍如何在如何在SSMS和用和用T-SQL命令创建视图。命令创建视图。任务描述任务描述 6.2.1 在在SSMS中创建视图中创建视图在在SQL Server Management Studio中创建视图的,其重点是视图设计器。中创建视图的,其重点是视图设计器。 【例例6.2】在在SSMS中创建一个学生选课信息视图,包含了学号、姓名、性别、专业、中创建一个学生选课信息视图,包含了学号、姓名、性别、专业、课名、成绩等信息,并按成绩的高低进行排序。课名、成绩等信息,并按成绩的高低进行排序。【例例6.3】在在SSMS中创建一个学生平均成绩视图,包含了学号、姓名、性别、专业、中创建
13、一个学生平均成绩视图,包含了学号、姓名、性别、专业、各门课的平均成绩等信息。各门课的平均成绩等信息。【例例6.4】在在SSMS中创建一个计算机应用专业的视图,名为:学生专业视图。中创建一个计算机应用专业的视图,名为:学生专业视图。6.2.2 T-SQL命令创建视图命令创建视图1用用T-SQL命令创建视图的语法格式命令创建视图的语法格式CREATE VIEW , WITH ENCRYPTIONAS 查询语句查询语句WITH CHECK OPTION说明:说明:(1)列名:视图中所使用的列名,当视图中使用与源表(或视图)相同的列名)列名:视图中所使用的列名,当视图中使用与源表(或视图)相同的列名时
14、,不必给出列名,但在以下情况时必须指定列名:时,不必给出列名,但在以下情况时必须指定列名: 当列是从算术表达式、函数或常量派生的。当列是从算术表达式、函数或常量派生的。 两个或更多的列可能具有的相同的名称(通常是因为联接)。两个或更多的列可能具有的相同的名称(通常是因为联接)。 视图中的某列被赋予了不同于派生来源列的名称时,列名也可以在视图中的某列被赋予了不同于派生来源列的名称时,列名也可以在 SELECT 语句中通过别名指派。语句中通过别名指派。(2)WITH ENCRYPTION:对包含:对包含CREATE VIEW语句文本的条目进行加密。语句文本的条目进行加密。6.2.2 T-SQL命令
15、创建视图命令创建视图(3)WITH CHECK OPTION:指在视图上所进行的修改都要符合查询语句所指:指在视图上所进行的修改都要符合查询语句所指定的限制条件,这样可以确保数据修改后仍可通过视图看到修改的数据。定的限制条件,这样可以确保数据修改后仍可通过视图看到修改的数据。(4)查询语句:用来创建视图的)查询语句:用来创建视图的SELECT语句。但对语句。但对SELECT语句有以下的限语句有以下的限制:制: 定义视图的用户必须对所参照的表或视图有查询权限,即可执行定义视图的用户必须对所参照的表或视图有查询权限,即可执行SELECT语语句。句。 不能使用不能使用COMPUTE或或COMPUTE
16、 BY子句。子句。 不能使用不能使用ORDER BY子句。子句。 不能使用不能使用INTO子句。子句。 不能在临时表或表变量上创建视图不能在临时表或表变量上创建视图。6.2.2 T-SQL命令创建视图命令创建视图2应用应用【例例6.5】创建一个计算机应用专业的视图:学生专业创建一个计算机应用专业的视图:学生专业1。分析:有一个筛选条件:计算机应用专业。分析:有一个筛选条件:计算机应用专业。一般在创建创视图时,首先测试查询语句是否能正确执行,测试成功后,再执行一般在创建创视图时,首先测试查询语句是否能正确执行,测试成功后,再执行整个创建视图语句。所以先执行查询语句:整个创建视图语句。所以先执行查
17、询语句:SELECT 学号学号,姓名姓名,性别性别,专业专业, 出生年月出生年月,家庭地址家庭地址,联系电话联系电话,总学分总学分 FROM 学生学生表表 WHERE 专业专业=计算机应用计算机应用测试正确后,再输入并执行如下语句:测试正确后,再输入并执行如下语句:CREATE VIEW 学生专业学生专业1 AS SELECT 学号学号,姓名姓名,性别性别,专业专业, 出生年月出生年月,家庭地址家庭地址,联系电话联系电话,总学分总学分 FROM 学生学生表表 WHERE 专业专业=计算机应用计算机应用。6.2.2 T-SQL命令创建视图命令创建视图【例【例6.6】创建一个计算机应用专业的视图:
18、学生专业】创建一个计算机应用专业的视图:学生专业2,并要求进行修改和插入,并要求进行修改和插入操作时仍需保证该视图只有计算机应用专业的学生。操作时仍需保证该视图只有计算机应用专业的学生。分析:由于要求进行修改和插入操作时仍需保证该视图只有计算机应用专业的学分析:由于要求进行修改和插入操作时仍需保证该视图只有计算机应用专业的学生,所以在创建视图时要加上:生,所以在创建视图时要加上:WITH CHECK OPTION。在查询编辑器中输入并执行如下语句在查询编辑器中输入并执行如下语句:CREATE VIEW 学生专业学生专业2 AS SELECT 学号学号,姓名姓名,性别性别,专业专业, 出生年月出
19、生年月,家庭地址家庭地址,联系电话联系电话,总学分总学分 FROM 学生学生表表 WHERE 专业专业=计算机应用计算机应用 WITH CHECK OPTION说明:在创建时出现了:说明:在创建时出现了:WITH CHECK OPTION 对对“学生专业学生专业2”视图的进行插入操作时,自动检查专业是不是视图的进行插入操作时,自动检查专业是不是“计算机应用计算机应用”,若不是,拒绝该记录插入。若不是,拒绝该记录插入。 对对“学生专业学生专业2”视图的记录进行删除、更改操作时,自动加上:专业视图的记录进行删除、更改操作时,自动加上:专业=计算机计算机应用应用。6.2.2 T-SQL命令创建视图命
20、令创建视图【例例6.7】创建所有学生学号、姓名及年龄的信息视图:创建所有学生学号、姓名及年龄的信息视图:stu_info。分析:由于年龄要通过分析:由于年龄要通过year(GETDATE()-YEAR(出生年月出生年月)计算得到,所以此计计算得到,所以此计算列要指定列名。算列要指定列名。先执行查询语句:先执行查询语句:SELECT 姓名姓名,学号学号,year(GETDATE()-YEAR(出生年月出生年月) as 年龄年龄 From 学生表学生表测试通过后,再在查询编辑器输入并执行如下的语句:测试通过后,再在查询编辑器输入并执行如下的语句: CREATE VIEW stu_infoAS SE
21、LECT 姓名姓名,学号学号,year(GETDATE()-YEAR(出生年月出生年月) as 年龄年龄 From 学生表学生表说明:说明:若对计算列不指定列名,即:若对计算列不指定列名,即:CREATE VIEW stu_infoAS SELECT 姓名姓名,学号学号,year(GETDATE()-YEAR(出生年月出生年月) From 学生表学生表执行该语句执行该语句会出现错误会出现错误6.2.2 T-SQL命令创建视图命令创建视图【例【例6.8】创建年龄大于】创建年龄大于20的学生的学号、姓名及年龄的视图:的学生的学号、姓名及年龄的视图:stu_age,并保,并保证对视图文本的修改都要符
22、合年龄大于证对视图文本的修改都要符合年龄大于20这个条件。这个条件。分析:增加了一个条件:年龄大于分析:增加了一个条件:年龄大于20,且要求对视图文本的修改都要符合年龄,且要求对视图文本的修改都要符合年龄大于大于20这个条件,所以需加入这个条件,所以需加入WITH CHECK OPTION在查询编辑器中输入并执行如下语句在查询编辑器中输入并执行如下语句:CREATE VIEW stu_ageAS SELECT 姓名姓名,学号学号,year(GETDATE()-YEAR(出生年月出生年月) as 年龄年龄 From 学生表学生表Where YEAR (GETDATE()-YEAR(出生年月出生年
23、月)20WITH CHECK OPTION6.2.2 T-SQL命令创建视图命令创建视图【例【例6.9】创建一个:学生选课信息视图】创建一个:学生选课信息视图1,包含了学号、姓名、性别、专业、课,包含了学号、姓名、性别、专业、课名、成绩等信息,并对创建的文本的条目进行加密。名、成绩等信息,并对创建的文本的条目进行加密。分析:因为视图中包含:学号、姓名、性别、专业、课名、成绩信息,所以要用分析:因为视图中包含:学号、姓名、性别、专业、课名、成绩信息,所以要用到到“学生表学生表”、“选课表选课表”、“课程表课程表”;同时,同时要对创建的文本进行加密,还需;同时,同时要对创建的文本进行加密,还需要加
24、上:要加上:WITH ENCRYPTION。先执行查询语句先执行查询语句:SELECT a.学号学号,姓名姓名,性别性别,专业专业,课名课名,成绩成绩 FROM 学生表学生表 a, 选课表选课表 b, 课程表课程表 cWHERE a.学号学号=b.学号学号 and b.课程号课程号=c.课程号课程号在保证查询语句正确后,再在查询编辑器中执行如下的语句在保证查询语句正确后,再在查询编辑器中执行如下的语句:CREATE VIEW 学生选课信息视图学生选课信息视图1WITH ENCRYPTIONASselect a.学号学号,姓名姓名,性别性别,专业专业,课名课名,成绩成绩 from 学生表学生表
25、a, 选课表选课表 b, 课程表课程表 cwhere a.学号学号=b.学号学号 and b.课程号课程号=c.课程号课程号6.2.2 T-SQL命令创建视图命令创建视图【例【例6.9】创建一个:学生选课信息视图】创建一个:学生选课信息视图1,包含了学号、姓名、性别、专业、课,包含了学号、姓名、性别、专业、课名、成绩等信息,并对创建的文本的条目进行加密。名、成绩等信息,并对创建的文本的条目进行加密。或者或者:SELECT a.学号学号,姓名姓名,性别性别,专业专业,课名课名,成绩成绩 FROM 学生表学生表 a JOIN 选课表选课表 bON a.学号学号=b.学号学号 JOIN 课程表课程表
26、 c ON b.课程号课程号=c.课程号课程号在保证查询语句正确后,再在查询编辑器中执行如下的语句:在保证查询语句正确后,再在查询编辑器中执行如下的语句:CREATE VIEW 学生选课信息视图学生选课信息视图1WITH ENCRYPTIONASSELECT a.学号学号,姓名姓名,性别性别,专业专业,课名课名,成绩成绩 FROM 学生表学生表 a JOIN 选课表选课表 bON a.学号学号=b.学号学号 JOIN 课程表课程表 c ON b.课程号课程号=c.课程号课程号这样创建的视图,是对文本进行加密的,即若执行:这样创建的视图,是对文本进行加密的,即若执行:sp_helptext 学生
27、选课信息视图学生选课信息视图1会显示:对象会显示:对象 学生选课信息视图学生选课信息视图1 的文本已加密。的文本已加密。6.2.2 T-SQL命令创建视图命令创建视图【例例6.10】创建一个学生平均成绩视图创建一个学生平均成绩视图1,包含了学号、姓名、性别、专业、各,包含了学号、姓名、性别、专业、各门课的平均成绩等信息。门课的平均成绩等信息。分析:因为视图中包含了:学号、姓名、性别、专业,所以要用到分析:因为视图中包含了:学号、姓名、性别、专业,所以要用到“学生表学生表”,而要显示平均成绩,则要用到而要显示平均成绩,则要用到“选课表选课表”。由于平均成绩要计算得到,所以要指。由于平均成绩要计算
28、得到,所以要指定列名。定列名。先执行查询语句:先执行查询语句:SELECT a.学号学号,姓名姓名,性别性别,专业专业, AVG(成绩成绩) 平均成绩平均成绩 FROM 学生表学生表 a JOIN 选课表选课表 b ON a.学号学号=b.学号学号 GROUP BY a.学号学号,姓名姓名,性别性别,专业专业因为平均成绩前的列有:学号、姓名、性别、专业,所以在分组中要体现出来,因为平均成绩前的列有:学号、姓名、性别、专业,所以在分组中要体现出来,写成:写成:GROUP BY a.学号学号,姓名姓名,性别性别,专业。专业。 在保证查询语句正确后,再在查询编辑器中执行如下的语句:在保证查询语句正确
29、后,再在查询编辑器中执行如下的语句:CREATE VIEW学生平均成绩视图学生平均成绩视图1ASSELECT a.学号学号,姓名姓名,性别性别,专业专业, AVG(成绩成绩) 平均成绩平均成绩 FROM 学生表学生表 a JOIN 选选课表课表 b ON a.学号学号=b.学号学号 GROUP BY a.学号学号,姓名姓名,性别性别,专业专业6.2.2 T-SQL命令创建视图命令创建视图视图不仅可以建立在一个或多个基本表上,也可以建立在一个或多个已定义好的视图不仅可以建立在一个或多个基本表上,也可以建立在一个或多个已定义好的视图上,或建立在基本表和视图上。视图上,或建立在基本表和视图上。【例例
30、6.11】利用利用【例例6.5】建立的视图:建立的视图:“学生专业学生专业1”及学生成绩管理数据库中及学生成绩管理数据库中的数据表,创建一个计算机应用专业并选修了的数据表,创建一个计算机应用专业并选修了C语言程序设计课程的学生视图。语言程序设计课程的学生视图。分析:分析:【例例6.5】建立的视图:学生专业建立的视图:学生专业1,是计算机应用专业的学生,所以可以,是计算机应用专业的学生,所以可以选择:学生专业选择:学生专业1,选课表,课程表。,选课表,课程表。在查询编辑器中执行如下的语句:在查询编辑器中执行如下的语句:CREATE VIEW 计算机应用专业计算机应用专业_C语言视图语言视图AS
31、select a.学号学号,姓名姓名,性别性别,专业专业, 课名课名,出生年月出生年月,家庭地址家庭地址,联系电话联系电话 from 学生专业学生专业1 a, 选课表选课表 b,课程表课程表 c where a.学号学号=b.学号学号 and b.课程号课程号=c.课程号课程号 and 课名课名=C语言程序设计语言程序设计 6.3 6.3 学生成绩管理数据库视图的管理学生成绩管理数据库视图的管理在视图使用过程中,可能经常会发生基本表的改变,而使视图无法正常工作,这在视图使用过程中,可能经常会发生基本表的改变,而使视图无法正常工作,这样,需要重新修改视图的定义;或者,一个视图可能不再具有使用价值
32、,需要将样,需要重新修改视图的定义;或者,一个视图可能不再具有使用价值,需要将其删除。因而,作为数据库管理员,还必须学会视图的管理。本学习任务主要学其删除。因而,作为数据库管理员,还必须学会视图的管理。本学习任务主要学习如何利用习如何利用SQL Server Management Studio及及T-SQL语句对视图进行管理。语句对视图进行管理。任务描述任务描述 6.3.1 查看视图定义查看视图定义1利用利用SQL Server Management Studio查看视图定义查看视图定义在在SQL Server Management Studio中展开中展开“数据库数据库”“视图视图”,用鼠标
33、右键,用鼠标右键点击要查看的视图,在弹出的快捷菜单中选择点击要查看的视图,在弹出的快捷菜单中选择“设计设计”,再在弹出视图设计器后,再在弹出视图设计器后就可以查看。就可以查看。【例例6.12】查看查看【例例6.7】创建的视图:创建的视图:stu_info。在在SQL Server Management Studio中,展开中,展开“数据库数据库”“学生成绩管理学生成绩管理”“视图视图”,右击右击stu_info,在弹出的快捷菜单中选择,在弹出的快捷菜单中选择“设计设计”,出现视图设计器,如图所示。,出现视图设计器,如图所示。说明:不能查看加密的视图的设计。在说明:不能查看加密的视图的设计。在【
34、例例6.8】中创建的中创建的“学生选课信息视图学生选课信息视图1”是加密的,是加密的,若对它右击,在弹出的快捷菜单中发现若对它右击,在弹出的快捷菜单中发现“设计设计”菜单的颜色是灰色的,不能使用。菜单的颜色是灰色的,不能使用。6.3.1 查看视图定义查看视图定义2利用系统存储过程查看视图信息利用系统存储过程查看视图信息(1)sp_help 用于返回视图的详细信息。用于返回视图的详细信息。格式:格式:EXEC sp_help 视图名视图名【例例6.13】用用sp_help查看查看【例例6.7】创建的视图:创建的视图:stu_info。在查询编辑器中执行如下的命令:在查询编辑器中执行如下的命令:s
35、p_help stu_info执行结果如图所示。执行结果如图所示。6.3.1 查看视图定义查看视图定义2利用系统存储过程查看视图信息利用系统存储过程查看视图信息(2)sp_helptext 查看视图的定义文本。查看视图的定义文本。格式:格式:EXEC sp_helptext 视图名视图名【例例6.14】查看查看【例例6.7】创建的视图:创建的视图:stu_info的定义文本。的定义文本。在查询编辑器中执行如下的命令:在查询编辑器中执行如下的命令:sp_helptext stu_info执行结果如图所示。执行结果如图所示。对已加密文本的视图,则是看不到其定义的文本。对已加密文本的视图,则是看不到
36、其定义的文本。6.3.1 查看视图定义查看视图定义2利用系统存储过程查看视图信息利用系统存储过程查看视图信息【例例6.15】查看在查看在【例例6.9】中创建的已对文本的条目进行加密的学生选课信息中创建的已对文本的条目进行加密的学生选课信息视图视图1。在查询编辑器中执行如下的命令:在查询编辑器中执行如下的命令:sp_helptext 学生选课信息视图学生选课信息视图1执行结果如图所示。执行结果如图所示。6.3.2 修改视图定义修改视图定义1. 在在“视图设计器视图设计器”中直接修改中直接修改在对象资源管理器中右击要查看的视图,在弹出的快捷菜单中选择在对象资源管理器中右击要查看的视图,在弹出的快捷
37、菜单中选择“设计设计”,然,然后在出现的视图设计器中修改。如果要添加表、视图,则可以在关系图窗口中右后在出现的视图设计器中修改。如果要添加表、视图,则可以在关系图窗口中右击,在弹出的快捷菜单中选择击,在弹出的快捷菜单中选择“添加表添加表”,也可以通过菜单:,也可以通过菜单:“查询设计查询设计器器”“添加表添加表”选择项。选择项。【例例6.17】将将【例例6.7】创建的视图创建的视图stu_info改为:学号、姓名、性别及出生年改为:学号、姓名、性别及出生年月。月。 (1)启动)启动SSMS,在对象资源管理器中,展开,在对象资源管理器中,展开“数据库数据库”“学生成绩管学生成绩管理理”“视图视图
38、”,右击,右击stu_info,在弹出的快捷菜单中选择,在弹出的快捷菜单中选择“设计设计”,出现视图,出现视图设计器。设计器。(2)在关系图窗口中选择)在关系图窗口中选择“性别性别”复选框。复选框。(3)单击工具栏中的按钮,执行)单击工具栏中的按钮,执行SQL语句,在语句,在“结果结果”窗口将显示包含在视图窗口将显示包含在视图中的数据行。中的数据行。(4)单击保存按钮,保存视图即可。)单击保存按钮,保存视图即可。说明:若在定义视图时,对其文本进行加密,则无法在说明:若在定义视图时,对其文本进行加密,则无法在SQL Server Management Studio中修改。中修改。6.3.2 修改
39、视图定义修改视图定义2. 利用利用T-SQL语句修改视图定义语句修改视图定义利用利用ALTER VIEW语句可以修改视图定义,该命令的基本语法如下:语句可以修改视图定义,该命令的基本语法如下:ALTER VIEW , WITH ENCRYPTIONAS 查询语句查询语句WITH CHECK OPTION其中,参数的含义与创建视图其中,参数的含义与创建视图CREATE VIEW命令中的参数含义相同。命令中的参数含义相同。6.3.2 修改视图定义修改视图定义1. 在在“视图设计器视图设计器”中直接修改中直接修改【例例6.18】将将【例例6.17】更改的视图更改的视图stu_info:改为,学号、姓
40、名、性别、专业:改为,学号、姓名、性别、专业及年龄。及年龄。在查询编辑器中输入并执行如下的命令:在查询编辑器中输入并执行如下的命令:ALTER VIEW stu_infoAS SELECT 姓名姓名,学号学号,性别性别,专业专业,year(GETDATE()-YEAR(出生年月出生年月) as 年龄年龄 From 学生表学生表6.3.3更改视图名更改视图名1使用使用SSMS更改视图名更改视图名在在SQL Server Management Studio中,选择要更名的视图,单击鼠标右键,中,选择要更名的视图,单击鼠标右键,然后从弹出的快捷菜单中选择然后从弹出的快捷菜单中选择“重命名重命名”命令
41、。命令。2利用系统存储过程更名视图利用系统存储过程更名视图利用系统提供的存储过程利用系统提供的存储过程sp_rename可以对视图进行重命名,其语法格式如下:可以对视图进行重命名,其语法格式如下:sp_rename 原视图名原视图名,新视图名新视图名【例例6.19】将视图将视图stu_info改名为改名为stu_information在查询编辑器中输入并执行如下的命令:在查询编辑器中输入并执行如下的命令:sp_rename stu_info,stu_information在执行结果中友情提示:更改对象名的任一部分都可能会破坏脚本和存储过程。在执行结果中友情提示:更改对象名的任一部分都可能会破坏
42、脚本和存储过程。刷新对象资源管理器,可以看到视图名进行了更改。刷新对象资源管理器,可以看到视图名进行了更改。【例例6.20】将视图将视图stu_information再次改名为再次改名为stu_info在查询编辑器中输入并执行如下的命令:在查询编辑器中输入并执行如下的命令:sp_rename stu_information , stu_info 6.3.4 删除视图删除视图当一个视图不再需要时,可对其进行删除操作,以释放存储空间当一个视图不再需要时,可对其进行删除操作,以释放存储空间。1使用使用SSMS删除视图删除视图在在SQL Server Management Studio中,选择要删除的
43、视图,单击鼠标右键,中,选择要删除的视图,单击鼠标右键,然后从弹出的快捷菜单中选择然后从弹出的快捷菜单中选择“删除删除”命令命令。2用用DROP VIEW语句语句删除视图的语法格式如下删除视图的语法格式如下: DROP VIEW 视图名视图名【例【例6.21】删除视图:学生专业】删除视图:学生专业2。在查询编辑器中输入并执行如下的命令在查询编辑器中输入并执行如下的命令:DROP VIEW 学生专业学生专业2 6.3.5 利用视图管理数据利用视图管理数据对视图进行更新操作时,还要注意基本表对数据的各种约束和规则要求。对视图进行更新操作时,还要注意基本表对数据的各种约束和规则要求。(1)创建视图的
44、)创建视图的select 语句中没有聚合函数,且没有语句中没有聚合函数,且没有top、group by、having及及distinct 关键字;关键字;(2)创建视图的)创建视图的select 语句的各列必须来自于基表(视图)的列,不能是表达语句的各列必须来自于基表(视图)的列,不能是表达式;式;(3)视图定义必须是一个简单的)视图定义必须是一个简单的SELECT语句,不能带连接、集合操作。即语句,不能带连接、集合操作。即SELECT语句的语句的FROM子句中不能出现多个表,也不能有子句中不能出现多个表,也不能有 JOIN等。等。在创建视图之后,可以通过视图来对基表的数据进行管理。更新视图是
45、指通过在创建视图之后,可以通过视图来对基表的数据进行管理。更新视图是指通过视图来插入(视图来插入(Insert)、修改()、修改(update)和删除()和删除(delete)数据。由于视图是虚)数据。由于视图是虚表,所以无论在什么时候对视图的数据进行管理,实际上都是在对视图对应的表,所以无论在什么时候对视图的数据进行管理,实际上都是在对视图对应的数据表中的数据进行管理。数据表中的数据进行管理。6.3.5 利用视图管理数据利用视图管理数据【例例6.22】对对【例例6.5】创建的视图:学生专业创建的视图:学生专业1,插入一条新的记录。学号为,插入一条新的记录。学号为03000104,姓名为:王无
46、,性别为:男,专业为:计算机应用,出生年月为:,姓名为:王无,性别为:男,专业为:计算机应用,出生年月为:1992-05-07,家庭地址:为杭州市中山路,家庭地址:为杭州市中山路35号,联系电话为:号,联系电话为总学分为:总学分为:60。在查询编辑器中输入:在查询编辑器中输入:Insert into 学生专业学生专业1 Values(03000104,王无王无,0,计算机应用计算机应用, 1992-05-07,杭杭州市中山路州市中山路35号号60)等价于:等价于:Insert into 学生表学生表 Values(03000104,王无王无,
47、0,计算机应用计算机应用, 1992-05-07,杭州杭州市中山路市中山路35号号60)1在视图中插入数据在视图中插入数据使用使用insert 语句通过视图向基本表插入数据时,如果视图不包括表中的所有字语句通过视图向基本表插入数据时,如果视图不包括表中的所有字段,则对视图中那些没有出现的字段无法显式插入数据,假如这些字段不接受段,则对视图中那些没有出现的字段无法显式插入数据,假如这些字段不接受系统指派的系统指派的null值,那么插入操作将失败。值,那么插入操作将失败。6.3.5 利用视图管理数据利用视图管理数据【例【例6.23】将【例】将【例6.8】创建的视图】创建的
48、视图stu_age,插入一条记录,学号为:,插入一条记录,学号为:03000105、姓名为:赵铁路,性别为:男,出生年月为:、姓名为:赵铁路,性别为:男,出生年月为:1990-9-8在查询编辑器中输入在查询编辑器中输入:Insert into stu_age Values(03000105,赵铁路赵铁路,0,1990-9-8)执行命令,则显示如图执行命令,则显示如图6-19所示结果,因为视图所示结果,因为视图stu_age中的年龄是计算得到的中的年龄是计算得到的列,所以无法插入。列,所以无法插入。6.3.5 利用视图管理数据利用视图管理数据【例例6.24】对对【例例6.9】中创建的视图:学生选
49、课信息视图中创建的视图:学生选课信息视图1,插入一条记录,学,插入一条记录,学号号03000104、姓名:赵铁路、性别为:男,专业为:计算机应用、课名为:大、姓名:赵铁路、性别为:男,专业为:计算机应用、课名为:大学英语、成绩:学英语、成绩:85的信息。的信息。在查询编辑器中输入:在查询编辑器中输入:Insert into 学生选课信息视图学生选课信息视图1 Values(03000104,赵铁路赵铁路,0,计算机应用计算机应用,大大学英语学英语,85) 执行命令,则显示如图执行命令,则显示如图6-20所示结果,因为视图学生选课信息视图所示结果,因为视图学生选课信息视图1是从多个表中导出的,所
50、以无法插入。是从多个表中导出的,所以无法插入。6.3.5 利用视图管理数据利用视图管理数据【例例6.25】对对【例例6.5】创建的视图:创建的视图: stu_info中学号为中学号为“03000104”的学生姓的学生姓名改为名改为“王好好王好好”update stu_infoset 姓名姓名=王好好王好好where 学号学号=03000104 等价于:等价于:update 学生表学生表set 姓名姓名=王好好王好好where 学号学号=03000104 2通过视图更新数据通过视图更新数据使用使用UPDATE语句可以通过视图修改基本表的数据。语句可以通过视图修改基本表的数据。6.3.5 利用视图
51、管理数据利用视图管理数据【例例6.26】将视图将视图stu_is中学号为中学号为“03000102”的学生姓名改为的学生姓名改为“陈军备陈军备”,其,其中视图:中视图:stu_is是这样创建的:是这样创建的:CREATE VIEW stu_isAS SELECT 学号学号,姓名姓名, 出生年月出生年月 from 学生表学生表Where 专业专业= 计算机应用计算机应用 and 性别性别=男男WITH CHECK OPTION解:进行修改语句为:解:进行修改语句为:update stu_is set 姓名姓名=陈军备陈军备where 学号学号=03000102等价于:等价于:update 学生表
52、学生表 set 姓名姓名=陈军备陈军备where 学号学号=03000102 and 专业专业= 计算机应用计算机应用 and 性别性别=0说明:若更新视图时只影响其中一个表,同时新数据值中含有主键字,系统将说明:若更新视图时只影响其中一个表,同时新数据值中含有主键字,系统将接受这个修改操作。接受这个修改操作。 6.3.5 利用视图管理数据利用视图管理数据【例例6.27】将视图:将视图:stu_is_c1中学号为中学号为“02000102”的学生成绩改为的学生成绩改为75,其中,其中视图视图stu_is_c1是这样创建的:是这样创建的:CREATE VIEW stu_is_c1 AS SELE
53、CT a.学号学号,姓名姓名,专业专业,成绩成绩FROM 学生表学生表 a,选课表选课表 bWHERE a.学号学号=b.学号学号 and 课程号课程号=1001 解:进行更改的命令为:解:进行更改的命令为: Update stu_is_c1Set 成绩成绩=75 Where 学号学号=02000102 等价于:等价于:Update 选课表选课表Set 成绩成绩=75 Where 学号学号=02000102 and 课课程号程号=10016.3.5 利用视图管理数据利用视图管理数据【例【例6.28】删除视图】删除视图stu_is中学号为中学号为“03000102”的学生记录的学生记录DELET
54、E FROM stu_is WHERE 学号学号= 03000102等价于等价于:DELETE FROM 学生表学生表WHERE 学号学号= 03000102 AND 专业专业= 计算机应用计算机应用 AND 性别性别=03通过视图删除数据通过视图删除数据使用使用DELETE语句可以通过视图删除基本表的数据。但对于依赖于多个基本表语句可以通过视图删除基本表的数据。但对于依赖于多个基本表的视图,不能使用的视图,不能使用DELETE语句。语句。【例【例6.29】删除视图】删除视图stu_is_c1中学号为中学号为“03000102”的学生记录。的学生记录。DELETE FROM stu_is_c1
55、 WHERE 学号学号= 03000102执行此命令,则出现:视图或函数执行此命令,则出现:视图或函数stu_is_c1 不可更新,因为不可更新,因为stu_is_c1的创建的创建用到了多表,修改会影响多个基表。用到了多表,修改会影响多个基表。说明:视图说明:视图stu_is_c1是基于两个表生成的,所以不能用是基于两个表生成的,所以不能用DELETE语句删除。语句删除。6.3.5 利用视图管理数据利用视图管理数据4视图更新表数据的限制条件视图更新表数据的限制条件 通过前面的学习,已经了解到:通过视图来访问数据,其优点是非常明显的。通过前面的学习,已经了解到:通过视图来访问数据,其优点是非常明
56、显的。如可以起到数据保密、保证数据的逻辑独立性、简化查询操作等等。但是,话如可以起到数据保密、保证数据的逻辑独立性、简化查询操作等等。但是,话说回来,说回来,SQL Server数据库中的视图并不是万能的,它跟表这个基本对象还是数据库中的视图并不是万能的,它跟表这个基本对象还是有重大的区别。在使用视图的时候,需要遵守四大限制。有重大的区别。在使用视图的时候,需要遵守四大限制。6.3.5 利用视图管理数据利用视图管理数据限制条件一:视图数据的更改。限制条件一:视图数据的更改。不是所有视图都可以进行更改。如下面的这些视图,在不是所有视图都可以进行更改。如下面的这些视图,在SQL Server数据库
57、数据库中就不能够直接对其内容进行更新,否则,系统会拒绝这种非法的操作。中就不能够直接对其内容进行更新,否则,系统会拒绝这种非法的操作。(1)如在一个视图中,若采用)如在一个视图中,若采用Group By子句,对视图中的内容进行了汇子句,对视图中的内容进行了汇总。则用户就不能够对这张视图进行更新。这主要是因为采用总。则用户就不能够对这张视图进行更新。这主要是因为采用Group By子句对子句对查询结果进行汇总之后,视图中就会丢失这条记录的物理存储位置。如此,系查询结果进行汇总之后,视图中就会丢失这条记录的物理存储位置。如此,系统就无法找到需要更新的记录。若用户想要在视图中更改数据,则数据库管理统
58、就无法找到需要更新的记录。若用户想要在视图中更改数据,则数据库管理员就不能够在视图中添加这个员就不能够在视图中添加这个Group BY分组语句。分组语句。(2)如不能够使用)如不能够使用Distinct关键字。这个关键字的用途就是去除重复的记关键字。这个关键字的用途就是去除重复的记录。如没有添加这个关键字的时候,视图查询出来的记录有录。如没有添加这个关键字的时候,视图查询出来的记录有250条。添加了这个条。添加了这个关键字后,数据库就会剔除重复的记录,只显示不重复的关键字后,数据库就会剔除重复的记录,只显示不重复的50条记录。此时,若条记录。此时,若用户要改变其中一个数据,则数据库就不知道其到
59、底需要更改哪条记录。因为用户要改变其中一个数据,则数据库就不知道其到底需要更改哪条记录。因为视图中看起来只有一条记录,而在基础表中可能对有的记录录有几十条。为此,视图中看起来只有一条记录,而在基础表中可能对有的记录录有几十条。为此,若在视图中采用了若在视图中采用了Distinct关键字的话,就无法对视图中的内容进行更改。关键字的话,就无法对视图中的内容进行更改。(3)如果在视图中有)如果在视图中有AVG、MAX等函数,则也不能够对其进行更新。如在等函数,则也不能够对其进行更新。如在一张视图中,其采用了一张视图中,其采用了SUN函数来汇总员工的工资时,此时,就不能够对这张函数来汇总员工的工资时,
60、此时,就不能够对这张表进行更新。这是数据库为了保障数据一致性所添加的限制条件。表进行更新。这是数据库为了保障数据一致性所添加的限制条件。可见,试图虽然方便、安全,但是,其仍然不能够代替表的地位。可见,试图虽然方便、安全,但是,其仍然不能够代替表的地位。6.3.5 利用视图管理数据利用视图管理数据限制条件二:定义视图的查询语句中不能够使用某些关键字。限制条件二:定义视图的查询语句中不能够使用某些关键字。视图其实就是由一组查询语句组成。在查询语句中,可以通过一些关键字视图其实就是由一组查询语句组成。在查询语句中,可以通过一些关键字来格式化显示的结果。如我们在平时工作中,经常会需要把某张表中的数据跟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏果超市入围协议书
- 骑马摔伤赔偿协议书
- 车辆挂靠代管协议书
- 闲置衣物回购协议书
- 银行签完就业协议书
- 长沙工作就业协议书
- 公益类项目转让协议书
- 车辆线路转让协议书
- 门店入股经营协议书
- 邵阳盐业合作协议书
- 幼儿园孩子挑食培训
- 2024-2025学年初中八年级数学学期期末检测模拟卷(人教版)含答案
- 2025年江苏省中考数学压轴卷
- 中考英语复习阅读理解-主旨大意题、推理判断题
- 2025届安徽高考数学四模试卷含解析
- 飞行任务委托书
- 幼儿园观察记录书写培训
- 统计学知到智慧树章节测试课后答案2024年秋河南大学
- 《大学计算机基础教程》课件第1章 计算机基础知识
- 2024年下半年贵州省贵阳人力资源和社会保障部人事考试中心招聘4人易考易错模拟试题(共500题)试卷后附参考答案
- DB11∕T 729-2020 外墙外保温工程施工防火安全技术规程
评论
0/150
提交评论