您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第五章 数据查询--视图和游标(补充自学)
1第五章视图和游标2目标•视图概念•列出视图的优点•列出创建视图的指导原则•描述如何通过视图修改数据•解释如何删除视图•定义游标•描述如何创建游标•了解游标的执行过程•解释如何提取游标行3视图简介EmployeeViewLastnameFirstnameDavolioFullerLeverlingNancyAndrewJanetEmployeesEmployeeIDLastNameFirstnameTitle123DavolioFullerLeverlingNancyAndrewJanet~~~~~~~~~USENorthwindGOCREATEVIEWdbo.EmployeeViewASSELECTLastName,FirstnameFROMEmployees用户视图4视图概念•视图是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。•视图并不是数据库中存储的数据值的集合。•视图充当着查询中指定的表的筛选器。5视图的用途•筛选表中的行•防止未经许可的用户访问敏感数据•降低查询的复杂程度•将多个物理数据表抽象为一个逻辑数据表6视图的优点•对最终用户的好处–结果更容易理解–获得数据更容易•对开发人员的好处–限制数据检索更容易–维护应用程序更方便7创建视图在T-SQL语言中,CREATEVIEW语句用于创建视图。语法CREATEVIEWViewnameASSelectStatement示例CREATEVIEWNewMoon_employeeASSELECTemp_id,fname,minit,lname,hire_dateFROMemployeee,publisherspWHEREe.pub_id=p.pub_idANDpub_name='NewMoonBooks'8创建视图实例OrderID1066310827104271045110515CustomerIDBONAPBONAPPICCOQUICKQUICK~~~~~~~~~~~~~~~RequiredDate1997-09-241998-01-261997-02-241997-03-051997-05-07ShippedDate1997-10-031998-02-061997-03-031997-03-121997-05-23OrdersCustomersShipStatusViewUSENorthwindGOCREATEVIEWdbo.ShipStatusViewASSELECTOrderID,RequiredDate,ShippedDate,ContactNameFROMCustomerscINNERJOINOrdersoONc.CustomerID=O.CustomerIDWHERERequiredDateShippedDateCustomerIDBONAPPICCOQUICKCompanyNameBonapp'PiccoloundmehrQUICK-StopContactNameLaurenceLebihanGeorgPippsHorstKlossOrderID1026410271102801996-08-211996-08-291996-09-11ShippedDate1996-08-231996-08-301996-09-12ContactNameLaurenceLebihanGeorgPippsHorstKloss9创建视图的指导原则1-2•只能在当前数据库中创建视图•视图名称应与表名近似•视图名称应遵循标识符的命名规则•可以基于其他视图建立视图•不能将默认值、规则和触发器与视图相关联•不能为视图建立索引10创建视图的指导原则2-2•创建视图时不能使用临时表。•即使表被删除,视图定义仍将保留。•定义视图的查询不能包含以下语句:-ORDERBY-COMPUTE子句-COMPUTEBY子句-INTO关键字11通过视图修改数据满足下列条件时,可以使用视图修改表中的数据:•视图定义的FROM子句中应至少包含一个表。•选择列表中没有使用聚合函数或GROUPBY、UNION、DISTINCT或TOP子句。•视图的选择列表中不包含派生列。12修改视图的定义修改视图USENorthwindGOALTERVIEWdbo.EmployeeViewASSELECTLastName,FirstName,ExtensionFROMEmployees注意:只有在ALTERVIEW执行前后列名称不变的情况下,列上的权限才会保持不变13删除视图DROPVIEWview_name示例DROPVIEWNewMoon_employee语法•不再需要某个视图时,可以将其删除以释放资源。•删除视图对基表不产生任何影响。14游标概念•游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制•游标提供了一种对从表中检索出的数据进行操作的灵活手段•使用游标,可以实现以下目标:–允许定位到结果集中的特定行。–从结果集的当前位置检索一行或多行数据。–支持对结果集中当前位置的行进行修改。–对于其他用户对结果集包含的数据库数据所做的修改,支持不同的可见性级别15游标优点游标允许应用程序对查询语句select返回的行结果集中每一行进行相同或不同的操作它还提供对基于游标位置而对表中数据进行删除或更新的能力游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来使两个数据处理方式能够进行沟通16游标工作进程把游标与Transact-SQL语句的结果集相关联,并且定义游标的特征,如是否能够更新游标中的行。执行Transact-SQL语句以填充游标。检索想要查看的游标中的行。根据需要,对游标中当前位置的行执行修改操作(更新或删除)。关闭游标。17•T_SQL游标•API服务器游标•客户端游标游标实现方式18游标的提取和滚动操作从游标中检索一行或多行的操作称为提取执行一系列的提取操作以向前或向后检索行的操作称为滚动19API服务器游标类型•只进游标•静态游标•键集驱动游标•动态游标20•DECLARE语句用于创建游标。•它包含SELECT语句,用来引入表中的记录。语法在T_SQL中创建游标DECLARECursor_NameCURSOR[LOCAL|GLOBAL][FORWARDONLY|SCROLL][STATIC|KEYSET|DYNAMIC|FAST_FORWARD][READ_ONLY|SCROLL_LOCKS|OPTIMISTIC][TYPE_WARNING]FORSelectStatements[FORUPDATE[OFColumn_name[,….N]]]21•打开游标OPENCursor_name•检索记录FETCHCursor_name•关闭游标CLOSECursor_name•删除游标引用DEALLOCATECursor_name在T_SQL使用游标22在T_SQL提取和滚动游标1-2•FETCHFIRST:提取游标的第一行。•FETCHNEXT:提取上次提取的行的下一行。•FETCHPRIOR:提取上次提取的行的前一行。•FETCHLAST:提取游标中的最后一行。•FETCHABSOLUTEn:-如果n为正整数,则提取游标中的第n行-如果n为负整数,则提取游标最后一行之前的第n行-如果n为0,则不提取任何行示例见备注23在T_SQL提取和滚动游标2-2•FETCHRELATIVEn:-如果n为正,则提取上次提取的行之后的第n行。-如果n为负,则提取上提取的行之前的第n行。-如果n为0,则再次提取同一行。24FETCH语句全局变量•@@FETCH_STATUS:为执行的上一个游标FETCH语句返回一个整数值。•@@CURSOR_ROWS:返回当前打开的游标中符合条件的行的数目。25在T_SQL创建和使用游标示例26•视图概念•视图优点•创建和使用视图•修改和删除视图•游标概念•游标优点•游标实现方法•服务器游标类型•在T_SQL中创建和使用游标总结
本文标题:第五章 数据查询--视图和游标(补充自学)
链接地址:https://www.777doc.com/doc-3208544 .html