第6章 创建与管理其他数据库对象
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
视图的基本概念
• 作为一种数据库对象,视图是从一个或多 个表中导出的虚拟表(称为虚表)。 • 用户通过视图可以浏览他们所关心的部分 或全部数据,然而这些数据的物理位置却 仍存在于视图所引用的哪些表中。
视图的基本概念
• 视图是一个虚拟的表,通常,将视图所引 用的那些表(或视图)称为基表(或基视 图)。 • 视图与表的联系和区别
视图总结
• 应用视图,可以大大方便和简化用户对数据的请求, 简化对用户及安全方面的管理,并能以简单的操作来 实现复杂的功能。
视图的管理——修改视图
• 使用对象资源管理器的编辑数据对象功能 修改视图
视图的管理——修改视图
视图的管理——更改视图名称
• 更改视图名称
– 在MS中更改已创建的视图名称 – 使用系统存储过程sp_rename以更名
•如 EXEC SP_RENAME 'SCR_VIEW01','SCR_VIEW02','OBJECT'
视图的创建
CREATE VIEW SCR_VIEW AS SELECT dbo.STUDENTS.SID AS 学 号,dbo.STUDENTS.SNAME AS 姓名, AME AS 课程名称, dbo.RESULT.RESULT AS 考试成绩, dbo.COURSE.CREDIT AS 所修学分 FROM dbo.COURSE INNER JOIN dbo.RESULT ON dbo.COURSE.CID = dbo.RESULT.CID INNER JOIN dbo.STUDENTS ON dbo.RESULT.SID = dbo.STUDENTS.SID GO
使用视图查询数据
• 示例:通过学生选课成绩视图查询学生的 成绩。
IF EXISTS(SELECT name FROM sysobjects WHERE name='SCR_VIEW' AND xtype='V') SELECT 姓名,课程名称,考试成绩 FROM SCR_VIEW
通过视图更新数据
INSERT INTO S_VIEW
VALUES('207020103','刘清波','男','135562751206')
GO Create view s_view as SELECT SID AS 学号, Sname AS 姓名, Ssex AS 性别, Sphone AS 电话 FROM dbo.students
视图的创建
• 定义视图的SELECT语句用于指定视图中的 数据,与前面介绍的查询语句基本相同, 但受到以下三点限制:
– 不能包括ORDER BY或COMPUTE(BY)子句; – 不能包括关键字INTO; – 不能引用临时表。
视图的创建
• 示例:以教学管理(TEACHING_MIS)数据 库的STUDENTS、COURSE、RESULT表为基表, 创建一个包含有学生选修某门课程所得成 绩及其学分信息的视图。
视图的管理——修改视图
• 使用SSMS工具修改视图 • 使用DDL语句修改视图 • 使用对象资源管理器的编辑数据对象功能 修改视图
视图的管理——修改视图
• 使用DDL语句修改视图
ALTER VIEW [schema_name.]view_name[(column[,...n])] [WITH {ENCRYPTION|SCHEMABINDING|VIEW_METDATA}[, „n]] AS Select_statement [WITH CHECK OPTION]
• 如果权限允许,则用户可以修改视图中的全部或 部分数据。
视图总结
• 使用视图,简化了对数据库的查询操作。原数据库的 设计可能很复杂,但是使用视图可以避免用户跟复杂 的数据结构打交道,可以使用易于理解的名字来命名 视图,使用户眼中的数据库结构简单、清晰。 • 对于复杂的查询,可以写在视图中,这样用户只需要 使用视图就可以实现复杂的操作,从而避免重复写复 杂的查询语句的操作。
• 当数据在视图中修改时,其实质是数据在基表中 得到修改。
视图总结
• 视图来源于一个或多个基表的行或列的子集,它 可以是基表的统计汇总,或者是来源于另一个视 图或基表与视图的某种组合。 • 视图为用户提供一个受限制的环境,用户只能访 问允许的数据,一些不必要的、不合适的数据则 不在视图中出现。 • 用户可以像操纵表一样操纵视图中的数据的显示。
视图总结
• 由于通过视图可以让特定的用户只能查看指定的行或 列的数据,设计数据库应用系统时,对于不同的用户 定义不同的视图,使机密数据不出现在不应看到这些 数椐的用户视图上,可以大大简化了权限管理的内容。 • 对于用户而言,通过视图创建相对复杂的查询,把一 个表或多个表的数据导出到另一个应用程序的外部文 件中,便于做进一步的分析,这就大大方便用户数据 的导出。
通过视图更新数据
• 修改数据
– 示例:通过视图修改数据。 UPDATE S_VIEW SET 姓名='王宏' WHERE 学号='205002002' GO SELECT SID,SNAME FROM STUDENTS
通过视图更新数据
• 删除数据
– 示例:将上述操作中添加的学生记录予以删除。 DELETE FROM S_VIEW WHERE 学号='207020103' GO
通过视图更新数据
• 前面创建的SCR_VIEW视图是由三个基表连接定义 生成,因此不是行列子集视图,因此,在该视图 上不能正确执行更新数据的操作,例如,当执行 以下命令后:
SELECT * FROM SCR_VIEW UPDATE SCR_VIEW SET 姓名='赵宏伟' WHERE 学号='207010104' GO – 当打开基表STUDENTS时,发现该条记录姓名数据并未进行更新。
视图的创建
• 示例:在刚才创建的SCR_VIEW视图上,创 建一个只能浏览某一门课程成绩的视图。
CREATE VIEW SCR_VIEW01 AS SELECT * FROM SCR_VIEW WHERE 课程名称=‘数据库' GO SELECT * FROM SCR_VIEW01
视图的管理
• 修改视图 • 更改视图名称 • 删除视图
视图的管理——修改视图
• 示例:修改在TEACHING_MIS数据库中所创 建的学生成绩视图SCR_VIEW 。
视图的管理——修改视图
ALTER VIEW SCR_VIEW AS SELECT STUDENTS.SID AS 学号, STUDENTS.SNAME AS 姓名, AME AS 课程名称, RESULTS.RESULT AS 所修成 绩, REDIT AS 所修学分 FROM STUDENTS INNER JOIN RESULTS ON STUDENTS.SID = RESULTS.SID INNER JOIN COURSE ON RESULTS.CID = COURSE.CID WHERE STUDENTS.SID LIKE '207%'
视图的管理——删除视图
– 示例--删除以上更名后的学生选课成绩视图 SCR_VIEW02。 DROP VIEW SCR_VIEW02 GO
使用视图
• 视图与表相似,对表的许多操作在视图中 同样可以使用。即用户可使用视图对数据 进行查询、修改、删除等操作。 • 一旦视图被定义,用户就可以像对基本表 进行查询一祥对视图进行查询操作。
通过视图更新数据
• 在使用视图检索数据时,其操作与通过表 检索数据相似,对查询语句无限制,但通 过视图更改数据(INSERT、UPDATE、 DELETE)时,需要注意:
通过视图更新数据
• 如果在视图定义中包含计算列,则不能更新该列中的 数据;
• 若在定义视图的SELECT子句中带有分组子句或含有统 计函数,则不能修改视图中的数据;
视图 索引
存储过程 触发器
游标控制
• 了解:游标控制 • 重点内容:视图的概念、创建、管理及使 用,索引的概念、分类及创建管理,存储 过程的特点、创建及管理,触发器的概念、 创建及管理 • 教学难点:存储过程的创建及管理,触发 器的创建及管理
• 视图(View)是一种常用的数据库对象, 是关系数据库系统提供给用户以多种角度 来观察数据的一种重要机制。 • 使用视图使得用户能够以更多样而且更有 弹性的方式来访问数据,不仅可以确保数 据库的安全性,而且可以提高其使用的便 利性。
视图的管理——删除视图
• 删除视图
– 使用SSMS删除视图 – 使用DROP VIEW表达式
• DROP VIEW [schema_name.][view_name][,…n][;] • 注意:如果被删除的视图是其他视图的基视图,则 在删除基视图时其它派生的视图自动删除,但删除 某个基表后视图不能自动删除,要想删除,只能使 用本语句。
• 在SQL Server 2005中,若要通过视图更改基表中的 数据,只能通过行列子集视图才能进行更改操作。行 列子集视图是指该视图是在一个基表的行列子集上定 义的。
通过视图更新数据
CREATE AS SELECT SSEX FROM GO VIEW [dbo].[S_View] SID AS 学号, SNAME AS 姓名, AS 性别, SPHONE AS 电话 dbo.STUDENTS
• 使用T-SQL语句创建视图
CREATE VIEW [schema_name.]view_name[(column[,...n])] [WITH {ENCRYPTION|SCHEMABINDING|VIEW_METDATA}[, „n]] AS Select_statement [WITH CHECK OPTION]
视图的创建
• 建视图后,视图的名称存储在sys.objects 表中。 • 有关视图中所定义的列信息添加到 sys.columns表中。 • 有关视图相关性的信息添加到sys.depends 表中。 • 视图的定义信息存储到ments表中。
视图的创建
• 使用SSMS创建视图
视图的创建
• 更新数据包括插入(INSERT)、删除(DELETE) 和修改(UPDATE)三类操作。 • 视图是不实际存储数据的虚表,因此对视 图的更新,最终会转换成为对基表的更新。
通过视图更新数据
• 为防止用户通过视图对数据进行增删改时, 无意或故意操作不属于视图范围内的基表 数据,可在定义视图时加上WITH CHECK OPTION子句 • 在视图上增删改数据时,SQL Server会进 一步检查视图定义中的条件,若不满足条 件,则拒绝执行该操作。
视图的基本概念
• 视图的作用是可以间接地访问其它的表或 视图中的数据。 • 视图提供了另一种观察数据库中一个或多 个表中数据的方法。
视图的基本概念
• 使用视图的优点
– 集中数据显示 – 简化数据操作 – 提供简便易行的安全保密措施 – 易于合并或分割数据
视图的创建
• 要创建视图,用户必须具有在视图所引用 的表或视图上的“SELECT”权限以及“创建 视图”的权限 • SQL Server 2005提供两种方法创建视图: 这就是通过使用SQL Server Management Studio创建视图的方法和使用T-SQL语言创 建视图的方法。
通过视图更新数据
• 插入数据
– SQL Server 2005不仅可以通过视图检索基表中 的数据,还可通过视图向基表插入数据,但所 插入的数据必须要符合基表中各种约束和规则 的要求。
通过视图更新数据
• 示例:在TEACHING_MIS数据库的学生表STUDENTS上已 有一个视图名为S_VIEW,通过该视图向学生表中添加 一条记录,其添加数据的SQL代码与向表中添加记录 的代码类似,如下所示:
– 表是用来物理存储数据的结构,而视图是存储在系统 目录中的信息。 – 表是实际存在的物理数据,而视图是虚拟的、动态产 生的数据。 – 视图可以看作是一个或者多个表查询的结果。 – 视图中保存的是SELECT语句,视图中的记录实际上是 对基表内存储数据的引用,通过创建视图时所定义视 图的查询语句实现。