资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第6章 视图的创建与使用,第,6,章,视图的创建与使用,学习要点:,创建视图的方法,对视图进行管理,利用视图修改源表数据,6.1,视图简介,6.2,创建视图,6.3,管理,视图,6.4,通过视图修改数据,6.1 视图简介,6.1.1 视图的概念,视图是一种数据库对象,它由多个字段列和数据行构成,这些列和行来自于一个或多个物理数据表。,视图是一个虚拟表,所对应的数据是存储在所引用的数据表中,被引用的表称为基表。,例如:,Customer,基表,Relationer,基表,表,vCustInfo,是由前两个表派生出来的视图:,CID,CName,RName,RTelephone,CType,20100145,新大白宾馆,曾亮,18902280123,大户,20103122,从化电信广州办事处,黄前敏,18902218999,公众,20103565,北方鹏大广州分部,郑珺霞,38210611,商业,20104707,枫叶酒店有限公司,黄晓平,13302207607,商业,6.1 视图简介,6.1.2 视图的特点:,视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。,视图是由基表(实表)产生的表(虚表)。,视图的,建立和删除不影响基表,。,对,视图内容,的,更新,(添加、删除和修改),直接影响基表,。,当视图来自多个基表时,不允许添加和删除数据。,6.1.3 视图的作用:,简化用户的操作。,增加可读性。,提高安全性。,保证数据逻辑独立性。,创建视图需要注意:,视图的名称必须满足命名规则,且必须是唯一的。,只能在当前数据库中创建视图。,定义视图的查询不可以包含,ORDER BY,子句或,INTO,子句。,不能在视图上创建全文索引。,通过视图修改表中数据时,不能违反数据完整性规则。,6.2 创建视图,创建视图的常用工具,使用企业管理器创建,使用Transact-SQL语句创建,6.2.1 使用企业管理器创建,(1)进入新建视图对话框,右击创建视图的数据库,(2)为视图选择数据源,选择表,并添加到,右击鼠标,数据源可以是表、其他视图或函数,此处选择三个,表作为数据源,(3)选择视图的输出字段(表达式),通过单击字段左边,复选框选择字段,所选,字段,视图的查询语句,在该图中的其他复选框的含义如下:,“输出”复选框表示在输出结果中是否显示该字段内容;,“准则”复选框中可以输入该字段的限制条件,用来限制记录的输出,“排序类型”复选框表示新建视图的运行结果按照该字段的升序或降序排列。,“或”复选框表示可以为该字段输入多个逻辑关系为“或”的限制条件,.,若为该字段输入逻辑关系为“与”的限制条件可在下边的,Transact-SQL,语句中用“,AND”,输入。,注:由以上复选框的设置可自动生成视图的查询语句,也可在上图中由用户修改或重新输入,视图属性对话框,中的有关选项的含义如下:,“,DISTINCT,值”表示在视图的运行结果中是否显示重复记录。,“加密浏览”实现对视图定义加密,一旦对视图进行加密以后将不能对视图的定义进行查看或修改。,“顶端”复选框可以限制视图的最多输出记录条数,。,(4)在视图设计窗口中单击工具栏中的按钮 运行视图,(5)点击“保存”按扭保存完成视图的创建,定制视图属性,视图属性对话框,6.2.2 使用Transact-SQL语句创建,其语法格式如下,:,CREATE VIEW,.view_name(colume_name,n),WITH ,n,AS select_statement,WITH CHECK OPTION,WITH view_attribute可以取以下值:,(1)ENCRYPTION,(2)SCHEMABINDING,(3)VIEW_METADATA,简单记忆:,CREATE VIEW 视图名,AS SELECT 查询子句,database_name,:指定了被创建的视图对象所在数据库名称,Owner:用于指定视图的所有者的名称,view_name,:用于指定新建视图的名称,colume_name,:视图中的列名。可以包含多个列。若使用与源表或视图中相同的列名时,则不必给出,colume_name。,ENCRYPTION,:表示将新建的视图加密,SCHEMABINDING,:表示在,select_statement,语句中如果包含表、视图或者引用户自定义函数,则表名、视图名或者函数名前必须包含所有者前缀,VIEW_METADATA,:表示如果某一查询中引用该视图且要求返回浏览模式的元数据时,那么,SQL Server,将向,DBLIB,和,OLE DB API,返回视图的元数据信息,select_statement,:用于创建视图的SELECT语句,WITH CHECK OPTION,:用于强制视图上执行的所有数据修改语句都必须符合由select子句设置的准则,必须是数据库中现有用户名,例6_1:创建,V_Salers视图,包括,销售员的编号、姓名、性别、地址。利用Salers表。,Use sales,GO,CREATE VIEW V_Salers(,编号,姓名,性别,地址),AS,SELECT SaleID,Salename,Sex,Address,FROM Salers,打开sales数据库,视图名,视图包含的列名,例6_3:,在sales数据库中创建如下视图:利用OrderDetails表和Products表查询每种产品销售的总价值。,USE SALES,GO,CREATE VIEW V_Sale_Total,(定单编号,产品名称,销售总价值),WITH ENCRYPTION,AS,SELECT OrderDetails.OrderID,Products.ProductName,Price*Quantity,FROM OrderDetails,Products,WHERE,OrderDetails.ProductID=Products.ProductID,加密视图,在查询分析器中输入以下SQL语句会执行视图:,SELECT *FROM V_Sale_Total,会生成如下的查询结果:,WITH CHECK OPTION的视图,例6-4 建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。,CREATE VIEW IS_Student,AS,SELECT Sno,Sname,Sage,FROM Student,WHERE Sdept=IS,WITH CHECK OPTION;,对IS_Student视图的更新操作,修改操作:DBMS自动加上Sdept=IS的条件,删除操作:DBMS自动加上Sdept=IS的条件,插入操作:DBMS自动检查Sdept属性值是否为IS,如果不是,则拒绝该插入操作,如果没有提供Sdept属性值,则自动定义Sdept为IS,基于视图的视图,例6-5 建立信息系选修了1号课程且成绩在90分以上的学生的视图。,CREATE VIEW IS_S2,AS,SELECT Sno,Sname,Grade,FROM,IS_S1,WHERE Grade=90;,建立分组视图,例6-6 将学生的学号及他的平均成绩定义为一个视图,假设SC表中“成绩”列Grade为数字型,CREAT VIEW S_G(Sno,,Gavg,),AS,SELECT Sno,,AVG(Grade),FROM SC,GROUP BY Sno;,6.3 管理视图,查看视图信息,修改视图,重命名视图,删除视图,注:视图,的管理工,具是企业,管理器和,命令语句,6.3.1 查看视图信息,利用企业管理器查看视图信息,右,击,视,图,展,开,数,据,库,点,击,属,性,视图的查询语句,视图的权限,利用系统存储过程查看视图信息,sp_help显示数据库对象的特征,sp_helptext查看数据库对象在系统表中的定义,sp_depends显示有关数据库对象相关性的信息,USE sales,GO,sp_help V_Quantity,使用sp_help显示视图的特征 语法如下:,sp_help objname=name,被显示对象名称,例6-4:,使用该存储过程显示视图V_Quantity的特征信息。,例6_5:,使用该存储过程显示视图,V_Quantity,的在系统表中的定义,则在查询分析器中输入如下命令行。,Use sales,Go,sp_helptext V_Quantity,使用,sp_helptext显示视图在系统表中的定义,语法如下:,sp_helptext objname=name,视图的定义,视图加密后不能显示视图的定义,例6_6:使用该存储过程显示视图,V_Quantity,的表依赖关系和引用的字段情况,则在查询分析器中输入如下命令行。,sp_depends显示视图对表的依赖关系和引用的字段,语法如下:,sp_depends objname=,object,Use sales,Go,Sp_depends V_Quantity,6.3.2 修改视图,利用企业管理器对视图进行修改,展开数据库,右击视图,选择设计视图,利用,ALTER,命令对视图进行修改,其语法形式如下:,ALTER VIEW view_name(column,n),with encryption,AS,select_statement,with check option,其中:参数的含义与创建视图CREATE VIEW命令中的参数含义相同,简单记忆:,ALTER VIEW 视图名,AS SELECT 查询子句,通常利用该命令取消视图的加密属性,Use sales,GO,Alter view V_Sale_Total(定单编号,产品名称,销售总价值),AS,SELECT OrderID,ProductName,Price*Quantity,FROM dbo.OrderDetails INNER JOIN dbo.Products,ON =,例6_7:利用ALTER命令去除视图V_Sale_Total的加密属性。,注:去掉加密属性后才可以查看视图的信息,6.3.3 重命名视图,利用企业管理器对图对象重命名,在企业管理器,中,双击该视图名,利用存储过程,sp_rename,对视图重命名,语法形式:sp_rename old_name,new_name,例6_8:,使用存储过程为视图V_customers重命名为V_customers1,sp_rename V_customers,V_customers1,6.3.4 删除视图,利用企业管理器删除视图,右击视图,删除,注意:若有其他数据库对象依赖于将要删除,的视图,则应考虑是否还要继续删除此视图,利用,DROP VIEW,命令删除视图,语法形式如下:DROP VIEW,view,.,n,例6-9:,删除视图V_Customers。在查询分析器中输入以下命令:,Drop view V_Customers,可以同时删除多个视图,6.4 通过视图修改数据,插入记录,修改记录,删除记录,6.4.1,利用视图插入记录,利用企业管理器插入新记录,“选中视图-右击-打开视图-返回所有行”,在视图的运行结果中直接填加新记录,利用,INSERTINTO,命令插入新记录,例6-10:,首先创建一个新视图文件V_stocks,基于表Products,要求包含库存stocks值在300以上的记录,在插入新记录。,Use sales,Go,Create view V_stocks,As,Select ProductID,ProductName,CategoryID,Price,stocks,From products,Where stocks300,Insert into V_stocks,Values(P03007,冰糖,3,6.0000,200),Select*from V_stocks,例6-10,在插入新记录时
展开阅读全文