《数据库原理与应用》08.视图的创建和使用.ppt
孙 发 勤 扬州大学新闻与传媒学院,数据库原理与应用第八讲 视图的创建和使用,视图概述 创建视图 查看视图信息 修改和重命名视图 使用视图,本讲主要内容,概述,视图的概念 视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图的结构和数据是对数据表进行查询的结果。视图被定义后便存储在数据库中,通过视图看到的数据只是存放在基表中的数据。当对通过视图看到的数据进行修改时,相应的基表的数据也会发生变化,同时,若基表的数据发生变化,这种变化也会自动地反映到视图中。视图可以是一个数据表的一部分,也可以是多个基表的联合。,使用视图的优点和作用,可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求。使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化数据权限管理和重新组织数据以便输出到其他应用程序中。视图可以使用户只关心他感兴趣的某些特定数据和他们所负责的特定任务,而那些不需要的或者无用的数据则不在视图中显示。视图大大地简化了用户对数据的操作。视图可以让不同的用户以不同的方式看到不同或者相同的数据集。在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。视图提供了一个简单而有效的安全机制。,概述,视图的优点视图可以屏蔽数据的复杂性,简化用户对数据库的操作。视图可以让不同的用户以不同的方式看到不同或者相同的数据集。可以使用视图重新组织数据。视图可以定制不同用户对数据的访问权限。,创建视图,视图的名称 只能在当前数据库中创建视图。一个视图中行、列的限制。如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。视图与基表的关系不能在视图上创建索引,不能在规则、默认的定义中引用视图。,创建视图,1、使用企业管理器创建视图 2、使用Transact-SQL语句创建视图 CREATE VIEW.view_name(column,.n)WITH,.n ASselect_statement WITH CHECK OPTION:=ENCRYPTION|SCHEMABINDING|VIEW_METADATA 3、使用向导创建视图,查看视图信息,1 使用企业管理器查看视图信息 2 使用系统存储过程查看视图信息 sp_help 数据库对象名称sp_helptext 视图(触发器、存储过程)sp_depends 数据库对象名称,修改和重命名视图,1使用企业管理器修改视图 2使用Transact-SQL语句修改视图 ALTER VIEW view_name(column,.n)WITH ENCRYPTIONAS select_statement WITH CHECK OPTION,修改和重命名视图,1使用企业管理器重命名视图2使用系统存储过程重命名视图 sp_rename old_name,new_name,使用视图,修改视图中的数据时每次修改都只能影响一个基表。不能修改那些通过计算得到的字段。如果在创建视图时指定了WITH CHECK OPTION选项,那么所有使用视图修改数据库信息时,必须保证修改后的数据满足视图定义的范围。执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。如果视图引用多个表时,无法用DELETE命令删除数据,若使用UPDATE命令则应与INSERT操作一样,被更新的列必须属于同一个表。,使用视图通过视图添加表数据,1 插入数据记录 1使用企业管理器在视图中插入记录 2使用Transact-SQL语句通过视图插入记录可以使用insert语句向视图中添加表数据。但是,使用insert语句在视图中添加的数据,将存储在视图参照的数据表中。由于视图的特性,通过视图向数据表中添加数据,必须满足下列条件:,使用视图插入数据记录,1、使用insert语句向数据表中插入数据的用户必须在数据表中有插入数据的权限。2、由于视图通常只引用表中的部分字段,那些在视中未引用的字段必须知道在没有指定取值的情况下如何填充数据。如:允许空、有默认值等。3、视图中不能包含多个字段值的组合,或包含了使统计函数的结果。4、不能包含distinct或group by子句5、若使用了with check option,则须符合where子句的插入条件。6、若视图引用了多个数据表,则通过视图向数据表添加数据时,这个语句只能指定同一个表中的字段。若希望通过一个引用了多个数据表的视图中添加数据时,必须写多个insert语句。,使用视图更新视图中的数据,2 更新数据记录 1使用企业管理器在视图中更新记录2使用Transact-SQL语句通过视图更新记录同样,可以使用update语句,通过视图对数据表中的数据进行更新。注意:通过使用多个表的视图对数据表进行更新也需要书写多个update语句。适用与insert操作的许多限制同样适用与update操作。,使用视图删除数据记录,3 删除数据记录 1使用企业管理器在视图中删除记录 2使用Transact-SQL语句通过视图删除记录 使用视图删除记录时,可以直接利用Transact-SQL语言的DELETE语句删除视图中的记录。但应该注意,必须指定在视图中定义过的字段来删除记录。使用delete可以通过视图将数据表中的数据删除,但是若视图应用了两个或两个以上的数据表,则 不允许删除视图中的数据。通过视图删除的记录也不能违背视图定义的子句中的条件限制。,删除视图,1 使用企业管理器删除视图 2 使用Transact-SQL语句删除视图 DROP VIEW view_name,n,