数据库高级对象操作和管理.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2005年9月 第6页
2.用企业管理器定义视图
表区
列区
SQL脚本区 数据结果区
2005年9月 第7页
7.1.3管理视图
➢ 在查询分析器中查看、修改和删除视图
2005年9月 第8页
7.1.3管理视图
➢ 在企业管理器中查看、修改和删除视图
2005年9月 第9页
用系统存储过程管理视图
➢ 使用存储过程检查视图 ➢ 有三个存储过程,可以来查看视图有关信息。
CREAToyId, vToyName, cCategoryId, mToyRate, cBrandId, siToyQoh, siLowerAge
FROM dbo.Toys
WHERE mToyRate>30
GO
SELECT * FROM vwToys
图引用多个表时,无法用DELETE 命令删除 数据。
确认那些不包括在视图列中,但属于表的列, 是否允许NULL值或有缺省值的情况。
2005年9月 第13页
例7-3 通过视图修改多表数据
➢ vwOrderWrapper视图定义如下:
CREATE VIEW vwOrderWrapper AS SELECT cOrderNo, cToyId, siQty, vDescription, mWrapperRate
FROM Shopper JOIN Orders ON Shopper.cShopperId = Orders.cShopperId
JOIN OrderDetail ON Orders.cOrderNo = OrderDetail.cOrderNo
JOIN Toys ON OrderDetail.cToyId = Toys.cToyId
SCHEMABINDING | VIEW_METADATA }
2005年9月 第5页
例7-1:
➢ 要显示购物者的名字、所订购的玩具的名字和 订购数量。并对视图文本加密。
CREATE VIEW vwOrders WITH ENCRYPTION AS SELECT Shopper.vFirstName, vToyName, siQty
2005年9月 第2页
7.1.1 视图的优点
1.视点集中 用户只关心它感兴趣的某些特定数据和他们所负责的特定任务。
2.简化操作 视图大大简化了用户对数据的操作。因为在定义视图时,若视图本身就是 一个复杂查询的结果集,这样在每一次执行相同的查询时,不必重新写这 些复杂的查询语句,只要一条简单的查询视图语句即可。可见视图向用户 隐藏了表与表之间的复杂的连接操作。
字相同。 不能在视图说明语句中使用SELECT INTO语句;SELECT语句
里不能使用ORDER BY 、COMPUTE、COMPUTE BY子句, 不能使用临时表。 当通过视图查询数据时,SQL SERVER不仅要检查视图引用的 表是否存在,是否有效,而且还要验证对数据的修改是否违反 了数据的完整性约束。
sp_depends 对象名:显示视图所依赖的对象。 sp_help[对象名]:用来返回有关数据库对象的详细
信息。 sp_helptext对象名:检索出视图、触发器、存储过
程的文本。
➢ 删除视图
删除视图与删除表一样都使用DROP 命令。其语法 为:
DROP VIEW 视图名称
2005年9月 第10页
第7章 数据库高级对象操作和管理
教学内容:
➢ 视图 ➢ 存储过程 ➢ 函数 ➢ 事务和锁 ➢ 触发器 ➢ 游标
2005年9月 第1页
7.1 视图
➢ 1 视图的概念
视图(View)是数据库的一种对象, 它是数 据库系统提供给用户以多种角度观察数据库 中数据的一种重要机制。
是一个虚拟的表,该表提供了对一个或多个 表中一系列列的访问。它是作为对象存储在 数据库中的查询。
2005年9月 第4页
1.用SQL语句定义视图
可以通过CREATE VIEW 语句来创建视图。 语法:
CREATE VIEW view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ] AS select_statement [ WITH CHECK OPTION ] < view_attribute > ::= { ENCRYPTION |
3.定制数据 视图能够实现让不同的用户以不同的方式看到不同或相同的数据集。因此, 当有许多不同水平的用户共用同一数据库时,这显得极为重要。
4.合并分割数据 在有些情况下,由于表中数据量太大,故在表的设计时常将表进行水平分 割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。
5.提高了数据的安全性 视图可以作为一种安全机制。通过视图用户只能查看和修改他们所能看到 的数据。其它数据库或表既不可见也不可以访问。视图所引用表的访问权 限与视图权限的设置互不影响。
7.1.4通过视图管理数据
➢ 可以通过修改视图中的数据来修改基表中 的数据。
➢ 视图与表具有相似的结构,当向视图中插 入或更新数据时,实际上对视图所引用的 基表执行数据的插入和更新。
➢ 但是通过视图插入、更新数据和表相比有 一些限制。
2005年9月 第11页
例7-2:
➢ 我们创建一个视图,然后通过视图把玩具价格 大于30美元的玩具的价格打9折。
2005年9月 第3页
7.1.2 创建视图
➢ 在创建或使用视图时,应该注意以下情况:
只能在当前数据库中创建视图,在视图中最多只能引用1024 列。 如果视图引用的基本表被删除,则当使用该视图时将返回一条
错误信息。 如果视图中某一列是函数、数学表达式、常量或来自多个表的
列名相同,则必须为列定义名字。 视图名必须遵循标识符命名规则,绝不能与其所基于的表的名
/*查询1*/
UPDATE vwToys SET mToyRate=mToyRate*0.9
SELECT * FROM vwToys
/*查询2*/
2005年9月 第12页
7.1.4通过视图管理数据
➢ 注意:
如果修改将影响多个基本表,则你不能在视 图中一次性修改数据,否则可以。
不能修改那些内容为计算结果的列。例如, 一个经过计算的列或一个集合函数。
2.用企业管理器定义视图
表区
列区
SQL脚本区 数据结果区
2005年9月 第7页
7.1.3管理视图
➢ 在查询分析器中查看、修改和删除视图
2005年9月 第8页
7.1.3管理视图
➢ 在企业管理器中查看、修改和删除视图
2005年9月 第9页
用系统存储过程管理视图
➢ 使用存储过程检查视图 ➢ 有三个存储过程,可以来查看视图有关信息。
CREAToyId, vToyName, cCategoryId, mToyRate, cBrandId, siToyQoh, siLowerAge
FROM dbo.Toys
WHERE mToyRate>30
GO
SELECT * FROM vwToys
图引用多个表时,无法用DELETE 命令删除 数据。
确认那些不包括在视图列中,但属于表的列, 是否允许NULL值或有缺省值的情况。
2005年9月 第13页
例7-3 通过视图修改多表数据
➢ vwOrderWrapper视图定义如下:
CREATE VIEW vwOrderWrapper AS SELECT cOrderNo, cToyId, siQty, vDescription, mWrapperRate
FROM Shopper JOIN Orders ON Shopper.cShopperId = Orders.cShopperId
JOIN OrderDetail ON Orders.cOrderNo = OrderDetail.cOrderNo
JOIN Toys ON OrderDetail.cToyId = Toys.cToyId
SCHEMABINDING | VIEW_METADATA }
2005年9月 第5页
例7-1:
➢ 要显示购物者的名字、所订购的玩具的名字和 订购数量。并对视图文本加密。
CREATE VIEW vwOrders WITH ENCRYPTION AS SELECT Shopper.vFirstName, vToyName, siQty
2005年9月 第2页
7.1.1 视图的优点
1.视点集中 用户只关心它感兴趣的某些特定数据和他们所负责的特定任务。
2.简化操作 视图大大简化了用户对数据的操作。因为在定义视图时,若视图本身就是 一个复杂查询的结果集,这样在每一次执行相同的查询时,不必重新写这 些复杂的查询语句,只要一条简单的查询视图语句即可。可见视图向用户 隐藏了表与表之间的复杂的连接操作。
字相同。 不能在视图说明语句中使用SELECT INTO语句;SELECT语句
里不能使用ORDER BY 、COMPUTE、COMPUTE BY子句, 不能使用临时表。 当通过视图查询数据时,SQL SERVER不仅要检查视图引用的 表是否存在,是否有效,而且还要验证对数据的修改是否违反 了数据的完整性约束。
sp_depends 对象名:显示视图所依赖的对象。 sp_help[对象名]:用来返回有关数据库对象的详细
信息。 sp_helptext对象名:检索出视图、触发器、存储过
程的文本。
➢ 删除视图
删除视图与删除表一样都使用DROP 命令。其语法 为:
DROP VIEW 视图名称
2005年9月 第10页
第7章 数据库高级对象操作和管理
教学内容:
➢ 视图 ➢ 存储过程 ➢ 函数 ➢ 事务和锁 ➢ 触发器 ➢ 游标
2005年9月 第1页
7.1 视图
➢ 1 视图的概念
视图(View)是数据库的一种对象, 它是数 据库系统提供给用户以多种角度观察数据库 中数据的一种重要机制。
是一个虚拟的表,该表提供了对一个或多个 表中一系列列的访问。它是作为对象存储在 数据库中的查询。
2005年9月 第4页
1.用SQL语句定义视图
可以通过CREATE VIEW 语句来创建视图。 语法:
CREATE VIEW view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ] AS select_statement [ WITH CHECK OPTION ] < view_attribute > ::= { ENCRYPTION |
3.定制数据 视图能够实现让不同的用户以不同的方式看到不同或相同的数据集。因此, 当有许多不同水平的用户共用同一数据库时,这显得极为重要。
4.合并分割数据 在有些情况下,由于表中数据量太大,故在表的设计时常将表进行水平分 割或垂直分割,但表的结构的变化却对应用程序产生不良的影响。
5.提高了数据的安全性 视图可以作为一种安全机制。通过视图用户只能查看和修改他们所能看到 的数据。其它数据库或表既不可见也不可以访问。视图所引用表的访问权 限与视图权限的设置互不影响。
7.1.4通过视图管理数据
➢ 可以通过修改视图中的数据来修改基表中 的数据。
➢ 视图与表具有相似的结构,当向视图中插 入或更新数据时,实际上对视图所引用的 基表执行数据的插入和更新。
➢ 但是通过视图插入、更新数据和表相比有 一些限制。
2005年9月 第11页
例7-2:
➢ 我们创建一个视图,然后通过视图把玩具价格 大于30美元的玩具的价格打9折。
2005年9月 第3页
7.1.2 创建视图
➢ 在创建或使用视图时,应该注意以下情况:
只能在当前数据库中创建视图,在视图中最多只能引用1024 列。 如果视图引用的基本表被删除,则当使用该视图时将返回一条
错误信息。 如果视图中某一列是函数、数学表达式、常量或来自多个表的
列名相同,则必须为列定义名字。 视图名必须遵循标识符命名规则,绝不能与其所基于的表的名
/*查询1*/
UPDATE vwToys SET mToyRate=mToyRate*0.9
SELECT * FROM vwToys
/*查询2*/
2005年9月 第12页
7.1.4通过视图管理数据
➢ 注意:
如果修改将影响多个基本表,则你不能在视 图中一次性修改数据,否则可以。
不能修改那些内容为计算结果的列。例如, 一个经过计算的列或一个集合函数。