知识大全 创建视图(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入门:创建视图 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 如视图中所讨论的视图提供在一
Oracle多表创建的视图insert解决方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 单
知识大全 orale数据库如何利用sql语句创建视图的一般性使用方法
SQLCREATEVIEW语句什么是视图?在SQL中视图是基于SQL语句的结果集的可视化的表 视图包含行和列就像一个真实的表视图中的字段就是来自一个或多个数据库教程中的真实的表中的字段我们可以向
基于Eclipse的工具开发:透视图开发[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb
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俯,左视图宽相等。