知识大全 创建视图(2)

Posted 视图

篇首语:你必须非常努力,才能看起来毫不费力。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 创建视图(2)相关的知识,希望对你有一定的参考价值。

SQL实战新手入门:创建视图(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   创建视图( )

  下面的视图将返回位于书柜顶层(# )书架中价格最贵的前 本图书的名称 该示例使用了Microsoft SQL Server语法(它支持在视图中使用ORDER BY子句)

  CREATE VIEW vwTop booksOn thShelf

  AS

  SELECT TOP

  loc_position_left AS position

   bk_title AS title

   bk_id

  FROM location INNER JOIN books

  ON location fk_bk_loc = books bk_id

  WHERE loc_shelf =

  ORDER BY bk_price DESC;

  运行视图中的SELECT语句将返回数据的一个子集 它只有 个列 限制为最顶部的 条记录 并且按照BK_PRICE列排序(尽管通过该视图无法访问BK_PRICE列)

  SELECT * FROM vwTop booksOn thShelf;

  position title bk_id

  

   Wiley Pathways: Introduction to Database Management

   SQL Bible

   SQL Functions: Programmers Reference

  ( row(s) affected)

  使用视图抽取数据不仅可以隐藏底层数据模型的复杂性 使数据对用户更加友好 而且还可以拒绝访问未通过视图暴露出来的行和列 从而为数据访问提供一种安全机制 例如 如果想让用户能够查询位于第 个书架中价格最贵的前 本图书 但是又不泄漏图书的实际价格 那么上面例子中的视图可以实现这样的功能 即使BK_PRICE列存在于底层的表中 只有查询该视图(vwTop booksOn thShelf视图)权限的用户也永远无法看到图书的价格或是查询出价格排名第 位的图书

  试一试用视图包装复杂性

  下面将构造一个相对比较复杂的查询 其中包含了多个JOIN语句和一个GROUP BY子句 以查找用指定搜索标志例如SQL标记的图书 并将其按照出版年份进行分组 将该查询包装到一个视图中 然后观察如何使用视图向用户隐藏底层的复杂性 该示例使用Microsoft SQLServer创建 但在本书介绍的其他RDBMS中 无须任何修改也能正常运行

  ( ) 连接到RDBMS 打开New Query窗口

  ( ) 在查询窗口中输入下面的代码并单击Execute按钮

  CREATE VIEW vwOneComplexView

  AS

  SELECT bk_title AS title

   bk_published_year AS pub_year

   loc loc_shelf

  FROM books bk INNER JOIN books_authors ba

  ON bk bk_id = ba bk_id

  INNER JOIN authors au

  ON ba au_id = au au_id

  INNER JOIN location loc

  ON bk bk_id = loc fk_bk_loc

  INNER JOIN search_books sb

  ON sb bk_id = bk bk_id

  INNER JOIN searchTags st

  ON st tag_id = sb tag_id

  WHERE loc loc_shelf =

  AND st tag_value IN ( SQL )

  GROUP BY

  bk_published_year

   bk_title

   bk_price

   loc_shelf

  ( ) 确认该命令是否执行成功 以及是否确实创建了vwOneComplexView视图

  ( ) 从查询窗口中删除代码 输入下面的代码 执行一个新的查询

  SELECT * FROM vwOneComplexView

  ORDER BY title;

  title pub_year loc_shelf

  

  Microsoft SQL Server Weekend Crash Course

  SQL Bible

  SQL Functions: Programmers Reference

  Wiley Pathways: Introduction to Database Management

  ( row(s) affected)

  示例说明

  该视图使用INNER JOIN语法连接了 个表 另外 它强加了两个限制 一是仅搜索标记为SQL的图书 二是仅搜索位于顶层书架(第 个书架)中的图书 同时按照BOOKS表的BK_PUBLISHED_YEAR列(以及其他 个列)进行分组 通过将这些复杂性包装在一个视图中 就可以简化业务用户需要运行的查询 并同时实施某些业务和安全规则 如果对该视图仅有SELECT权限 那么用户就不可能查询到视图指定搜索条件之外的图书记录 只有以SQL标记并且位于第 个书架中的图书才会出现在视图的结果集中 用户可以使用ORDER BY子句对视图的结果进行排序 只需要通过视图暴露的别名就可以引用视图 在上面对该视图的查询中 使用了ORDER BY子句按照TITLE列对查询视图的结果进行了排序 该ORDER BY子句将覆蓋在定义视图的语法中GROUP BY子句产生的默认顺序

       返回目录 SQL实战新手入门

       编辑推荐

       Oracle索引技术

       高性能MySQL

cha138/Article/program/SQL/201311/16462

相关参考

知识大全 创建最简单物化视图

Oracle物化视图:创建最简单物化视图  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  物化视图

知识大全 SQL入门:创建视图

SQL入门:创建视图  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如视图中所讨论的视图提供在一

知识大全 Oracle多表创建的视图insert解决方法

Oracle多表创建的视图insert解决方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  单

知识大全 orale数据库如何利用sql语句创建视图的一般性使用方法

  SQLCREATEVIEW语句什么是视图?在SQL中视图是基于SQL语句的结果集的可视化的表  视图包含行和列就像一个真实的表视图中的字段就是来自一个或多个数据库教程中的真实的表中的字段我们可以向

知识大全 透视图开发[2]

基于Eclipse的工具开发:透视图开发[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 可更新的视图(2)

SQL实战新手入门:可更新的视图(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  可更新的视

知识大全 SQL Server 2000的视图中必须小心使用*符号[2]

SQLServer2000的视图中必须小心使用*符号[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET MVC实现我们自己的视图引擎[2]

ASP.NETMVC实现我们自己的视图引擎[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

三视图的三等关系有哪些?

  1主,左视图高平齐2主,俯视图长对正3俯,左视图宽相等。

三视图的三等关系有哪些?

  1主,左视图高平齐2主,俯视图长对正3俯,左视图宽相等。