使用SQL语句创建视图2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章 实现SQL Server数据库中的视图
5.3.2 修改视图
1. 使用企业管理器修改视图 【实例 5.6】使用企业管理器修改视图“学生成绩 信息”中将期中成绩删除。 操作步骤:
第5章 实现SQL Server数据库中的视图 归纳分析: 在设计视图窗口,可以添加或删除视图的基表 及其列,修改视图属性。例如,右击一个表的名 称,在弹出的菜单中选择“删除”,则会从视图 的定义中除去该表。其他操作与建立视图的方法 类似,这里不再赘述。 也可以在图5.12所示窗口的快捷菜单中选择 “属性”命令,在弹出的“查看属性”窗口中直 接修改创建视图的T-SQL语句。
5. 3管理视图
在企业管理器下或通过SQL语句都可以查看 视图的定义信息,但是,如果在视图的定义语句 中带有WITH ENCRYPTION子句,表示SQL Server 对建立视图的语句文本进行了加密,则无法看到 视图的定义语句。即使是视图的拥有者和系统管 理员也不能看到。
第5章 实现SQL Server数据库中的视图
第5章 实现SQL Server数据库中的视图
归纳分析: 由上例可知使用 T-SQL 创建表需要一定的格式,在这里我们 给出使用Transact-SQL语言创建表,语法如下: (1)使用系统存储过程显示视图的名称、列名、拥有者、创 建时间、列的属性等信息。 命令格式: sp help 表/视图 (2)使用系统存储过程显示定义视图的T-SQL语句。 命令格式: sp helptext 表/视图 (3)显示视图与其他表或视图的关联性信息(见第10章数据完 整性)。 sp depends 表/视图
第5章 实现SQL Server数据库中的视图 学习目标: 通过本章学习,你能够学会: 1. 创建和管理视图 2. 利用视图简化查询操作 3. 通过视图访问数据 4. 视图的优缺点
第5章 实现SQL Server数据库中的视图
5.1 视图基本概念 5.1.1视图基本概念 视图是从一个或多个表或视图中导出 的表,其结构合数据是建立在对表的查询 基础上的和表。和表一样,视图也是包括 几个被定义的数据列和多个数据行,但就 本质而言,这些数据列和数据行来源于其 所引用的表。所以视图不是真实存在的基 础表而是一张虚拟的表,与表不同的是, 视图本身并不存储视图中的数据,而是存 储在视图所引用的表中。
5.1.2 视图的优缺点
通过本章的实例,可见建立视图可以简化查 询,此外,通过视图还可以实现隐蔽数据库 复 杂性、为用户集中提取数据、简化数据库用户管 理等优点。 1. 隐蔽数据库的复杂性 2. 为用户集中提取数据 3. 简化用户权限的管理 4. 方便数据的交换
第5章 实现SQL Server数据库中的视图
5.4.3 通过视图删除表中的数据
【实例 5.12】删除视图“学生视图”中黎明的数 据。(假设所删除的数据已经存在)。 操作步骤: (1)启动“查询分析器”,输入如下SQL语句: DELETE 学生视图 WHERE 姓名='黎明' GO
第5章 实现SQL Server数据库中的视图 归纳分析: 在视图中使用 DELETE 命令删除数据就是删除 视图基表中的对应的数据。语法与在表中删除数 据相同。在视图中删除数据得以进行的条件是视 图只能有一个基表,且所要删除的数据必须存在 于视图中(即不违反视图的建立条件 )。删除视图 数据是针对视图的行进行的,亦即DELETE命令将 删除视图一行中的所有数据,实际上是删除了基 表中对应于该视图中某一行(或几行)的数据。
第5章 实现SQL Server数据库中的视图
5.2.2 使用T-SQL语句创建视图
【实例5.3】 在查询分析器下建立“课程查询视图”, 该视图中包含所有学号、课程号、课程名称的任课教师及 他们平时成绩。 根据题的要求,该视图要对表“学生信息”、“课 程”和“学生成绩”以主外键进行自然连接,并对视图文 本加密,使用户看不到定义的文本。 操作步骤:
5. 2创建视图
视图的命名必须遵循标志符规则,必须对每个用户都是 惟一的。视图名称不能和创建该视图的用户的其他任何一 个表的名称相同。 在默认状态下,视图中的列名继承了它们基表中的相应 列名,对于下列情况则需要重新 指定列的别名。 (1) 视图中的某些列来自表达式、函数或常量时。 (2) 当视图所引用不同基表的列中有相同列名时。 (3) 希望给视图中的列指定新的列名时。 (4) 视图的定义可以加密,以保证其定义不会被任何人 (包括视图的拥有者)获得。
第5章 实现SQL Server数据库中的视图 学生成绩信息的视图
基表1“学生信息”
基表2“学生成绩”
第5章 实现SQL Server数据库中的视图 查询语句执行结果
第5章 实现SQL Server数据库中的视图
【实例5.1】在查询分析器下建立“学生视图”的视图。
操作步骤:
第5章 实现SQL Server数据库中的视图
第5章 实现SQL Server数据库中的视图
5.5本章总结
本章主要介绍视图应用,通过一系列实例,讲述了 创建、修改以及删除视图的方法。另外,还对视图数据的 查询、修改、更新、插入和删除做了详细介绍。通过本章 学习,应该掌握以下内容: (1) 视图提供了一种查看数据库表数据的另外一种方法, 定义视图就是指定一个查询语句,然后将查询结果作为视 图。通过视图,可以对不同的用户提供同一个表的不同数 据表现。
第5章 实现SQL Server数据库中的视图 SELECT 语句可以是任何复杂的查询语句,但通 常不允许包含ORDER BY子句和DISTINCT短语。 如果CREATE VIEW语句没有指定视图列名, 则该视图的列名默认为SELECT语句目标列中各字 段的列名。
第5章 实现SQL Server数据库中的视图
第5章 实现SQL Server数据库中的视图
5.4.2 通过视图修改表中的数据
使用 UPDATE 命令可以通过视图修改基表中的数据, 修改数据的方法与修改表中数据的方法相同。与通过视图 向基表插入数据一样,也要注意一次只能修改一个表,且 修改后的数据不得违反基表中的各种约束关系。 【实例 5.11】将视图“学生视图”中的数据,学号=1010 , 姓名改为王梅。 操作步骤: (1)启动“查询分析器”,输入如下SQL语句: UPDATE 学生视图 SET 姓名='王梅' WHERE 学号='1010' GO (2)按“F5”键或单击工具栏“执行查询”图标执行。
第5章 实现SQL Server数据库中的视图
5.3.3 删除视图
当不再需要某个已经存在的视图时,可以删 除它。删除视图后,表和视图所基于的数据并不 受影响。 1.使用企业管理器删除视图 【实例 5.8】删除没有的视图如删除“课程查询视 图1”。 操作步骤: 在企业管理器中选中“课程查询视图1”右击, 在弹出的快捷菜单中选择“删除”命令,即可删 除选中的视图。
第5章 实现SQL Server数据库中的视图
5.2.1使用企业管理器创建视图
【5.2】在企业管理器中创建“学生成绩信息”视 图,该视图中从基表1学生信息和基表2学生成绩 中选择所有学号、姓名、课程号、期中成绩和期 末成绩。 操作步骤:
第5章 实现SQL Server数据库中的视图
第5章 实现SQL Server数据库中的视图
第5章 实现SQL Server数据库中的视图 归纳分析: 在视图中添加数据,就是对视图的基表添加数据, 添加数据也使用INSERT命令。用法与向表中添加 数据相同。但要注意: (1) 当视图有多个基表时,不能在一个语句中对视 图中的多个基表同时进行修改,亦即一次只能对 视图的一个基表内的数据进行增、删、改操作。 (2) 由于视图中可能仅仅包含基表中的部分列,因 此通过视图向基表中插入数据时,要求基表中的 其他非视图列应该是允许空(NULL)或含有默认值。 (3) 插入的数据必须满足基表的约束条件。
第5章 实现SQL Server数据库中的视图
归纳分析: 命令格式: CREATE VIEW 视图名[( 视图列名 1,视图列名 2 ,…,视 图列名n)] [WITH ENCRYPTION] AS SELECT 语句 [WITH CHECK OPTION] 其中 WITH ENCRYPTION 子句对视图进行加密, WITH CHECK OPTION表示对视图进行UPDATE、INSERT和DELETE操 作时,要保证所操作的行,满足视图定义中的条件,即只 有满足视图定义条件的操作才能执行。
第5章 实现SQL Server数据库中的视图 归纳分析: 首先学号=1010这条记录一定要在视图中存 在,如果它仅存在于视图的基表中而不存在于视 图中,则基表中的数据将无法更改。其次,尽管 一个SET语句可以为多个列变量赋值,但它们必 须来自同一个表。
第5章 实现SQL Server数据库中的视图
第5章 实现SQL Server数据库中的视图 注意:学号和姓名的数据取自基表学生信息,课程号, 期中成绩,期末成绩的数据取自基表学生成绩。 由于没有违反基表中的约束条件,所以数据全 部成功地插入到各个基表中。但是,查询视图学生 成绩信息将看不到这些数据,因为数据只是通过视 图分别孤立地插入到表 学生信息和学生成绩中, 而插入的数据并不符 合建立视图的条件。
归纳分析: 在窗口内容由上至下分为四部分:第一部分显示视图 的基表及其对应外键关系 (有关外键的内容在第8章);第 二部分显示视图中的列,可以在“准则”处输入每一列对 应的条件,如WHERE语句,并可以加入排序型,如果需要 使用GROUP语句对视图数据进行分组,则可以单击列名, 在弹出的快捷菜单 中选择“分组”;第三部分显示创建 视图所对应的 T-SQL 语句,可以在这里对查询条件进行 修改:第四部分为视图运行结果窗口,视图建立完毕后, 在图 5.8 所示窗口内右击并在弹出 的快捷菜单中选择 “运行”(或直接单击“运行”按钮 ),可以在此查看视 图的数据内容。 使用多个基表,建立视图,最好建立关联后再用,否 则会使视图的数据重复。
第5章 实现SQL Server数据库中的视图
5. 4 通过视图访问数据
对视图进行修改操作包括插入、修改和删除3类操 作。由于视图是不存储数据的虚表,所以对视图 数据的修改、最终转换为对基表数据的修改。 5.4.1 通过视图添加表中的数据
【实例5.10】在视图学生成绩信息中插入数据学号 =1013 ,姓名 = 王东,课程号 =202 ,期中成绩 =89 , 期末成绩 =87 。然后分别查询表学生习信息、学 生成绩和视图学生成绩信息,看看有什么结果。 操作步骤:
第5章 实现SQL Server数据库中的视图
2.使用T-SQL语言删除视图 【实例 5.9】删除没有的视图如删除“课程查询视图 2” 、 “课程查询视图a”。 操作步骤: (1)启动“查询分析器”,输入如下SQL语句: DROP VIEW 课程查询视图2, 课程查询视图a GO (2)按“F5”键或单击工具栏“执行查询”图标执行。 归纳分析: 由上例可知使用T-SQL删除视图。 命令格式: DROP VIEW 视图名1,视图名2,…,视图名n 使用该语句一次可以删除多个视图。
第5章 实现SQL Server数据库中的视图 2. 使用T-SQIL语句修改视图 【实例 5.7】在查询分析器中,建立一个“查询” 的视图,然后对视图名“查询”更改为“课程视 图”并增加一个平时成绩的列百度文库 操作步骤:
第5章 实现SQL Server数据库中的视图
归纳分析: 注意,只有数据库的所有者或视图的所有者能够对视图进 行重命名工作。修改视图名称与修改表名称所用方法相同。 命令格式: sp_rename 原视图名,新视图名 修改一个已经创建视图的定义可以使用T-SQL语句。 命令格式: ALTER VIEW 视图名 [WITH ENCRYPTION] AS SELECT 语句 [WITH CHECK OPTION]
5.3.1 查看视图信息
1.使用企业管理器查看 【实例5.4】查看[例5.1]创建的“学生成绩信息” 视图为例说明其操作过程。 操作步骤:
第5章 实现SQL Server数据库中的视图 2. 使用系统存储过程查看视图信息 【实例5.5】 查看视图学生成绩信息的名称、列名、 拥有者、创建时间等信息,查看视图的关联性, 查看定义视图的T-SQL语句。 操作步骤: