前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sql视图初步

Sql视图初步

作者头像
跑马溜溜的球
发布2020-12-07 15:24:48
4510
发布2020-12-07 15:24:48
举报
文章被收录于专栏:日积月累1024

一.什么是视图

视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。 感性的看一个例子。假如有下面的sql:

代码语言:javascript
复制
Select cust_name, cust_contact 
From customers, Orders, OrderItems
Where Customers.cust_id = Orders.cust_id
  And OrderItems.order_num = Order.order_num
  And prod_id = 'RGAN01'

此查询用来检索订购了某个特定产品的客户。任何需要这个数据的人都必须理解相关表的结构,并且知道如何创建查询和对表进行联结。为了检索其他产品的相同数据,必须修改最后的where子句。 假如可以把整个查询包装成一个名为ProductCustomers的虚拟表,则可以用如下语句轻松地检索出结果:

代码语言:javascript
复制
Select cust_name, cust_contace
From ProductCustomers
Where  prod_id = 'RGAN01'

二.为什么使用视图

1)征用sql语句 2)简化复杂的sql操作。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。 3)使用表的组成部分而不是整个表。 4)保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。 5)更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。 视图创建后,可以用与表基本相同的方式利用它们。可以对视图执行select操作,过滤和排序数据,将视图联结到其他视图或表,甚至能添加和更新数据。

三.创建与删除视图 CREATE VIEW viewname DROP VIEW viewname 继续一中的例子,我们创建一个视图:

代码语言:javascript
复制
Create view ProductCustomers as
Select cust_name, cust_contact, prod_id 
From customers, Orders, OrderItems
Where Customers.cust_id = Orders.cust_id
  And OrderItems.order_num = Order.order_num

使用视图:

代码语言:javascript
复制
Select cust_name, cust_contact
From ProductCustomers
Where prod_id = 'RGAN01'

四.性能问题

因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需要的每一个检索。如果你用多个联结和过滤创建了复杂的视图,可能会发现性能下降得很厉害。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012/11/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档