7-视图管理.ppt

7-视图管理

第七章 视图管理 7.1视图操作 视图是从一个或者多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。和真实的表一样,视图也包括几个被定义的数据列和多个数据行,但从本质上讲,这些数据列和数据行来源于其所引用的表。因此,视图不是真实存在的基础表而是一个虚拟表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。 使用视图的优点和作用 可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求。 使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化数据权限管理和重新组织数据以便输出到其他应用程序中。 视图可以使用户只关心他感兴趣的某些特定数据和他们所负责的特定任务,而那些不需要的或者无用的数据则不在视图中显示。 视图大大地简化了用户对数据的操作。 视图可以让不同的用户以不同的方式看到不同或者相同的数据集。 在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。 视图提供了一个简单而有效的安全机制。 7.1.1 创建视图 创建视图时应该注意以下情况: 只能在当前数据库中创建视图。 如果视图引用的基表或者视图被删除,则该视图不能再被使用,直到创建新的基表或者视图。 如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。 不能在视图上创建索引,不能在规则、缺省、触发器的定义中引用视图。 当通过视图查询数据时,SQL Server要检查以确保语句中涉及的所有数据库对象存在,而且数据修改语句不能违反数据完整性规则。 视图的名称必须遵循标识符的规则,且对每个用户必须是唯一的。此外,该名称不得与该用户拥有的任何表的名称相同。 【 例 7 】 使用 Transact 一 SQL 语句创建一个选修课程号为“ 01009 ”的学生简单情况视图,在查询分析器中输人下列语句: USE Student_ ms CREATEVIEW course view1 AS SELECT student .学号,姓名,课程名称 FROM student , course , score WHERE student.学号= score .学号 AND course.课程号= score .课程号 AND score .课程号 = 01009 7.1.2 修改和重命名视图 修改视图 利用企业管理器修改视图。 使用ALTER VIEW语句修改视图。 ALTER VIEW view_name [(column[,...n])] [WITHENCRYPTION] AS select_statement [ WITH CHECK OPTION ] 7.1.4 通过视图修改记录 使用视图修改数据时,需要注意以下几点: 修改视图中的数据时,不能同时修改两个或者多个基表,可以对基于两个或多个基表或者视图的视图进行修改,但是每次修改都只能影响一个基表。 不能修改那些通过计算得到的字段。 如果在创建视图时指定了WITH CHECK OPTION选项,那么所有使用视图修改数据库信息时,必须保证修改后的数据满足视图定义的范围。 执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。 如果视图引用多个表时,无法用DELETE命令删除数据。 插入数据记录 首先创建了一个新的视图v_employees,该视图基于表employees创建。 create view v_employees(number, name, age, sex, salary) as select number, name, age, sex, salary from employees where name=’张三’ 然后,通过执行以下语句使用该视图向表employees中添加一条新的数据记录。 Insert into v_employees Values(001,’李力’,22,’m’,2000) 更新数据记录 使用视图可以更新数据记录,但应该注意的是,更新的只是数据库中的基表。 创建了一个基于表employees的视图v_employees,然后通过该视图修改表employees中的记录。其程序清单如下: create view v_employees as select * from employees update v_employees set name=’张然’ where na

文档评论(0)

1亿VIP精品文档

相关文档