• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
luo
博客园    首页    新随笔    联系   管理    订阅  订阅

数据库视图

在编程的世界里面,代码重用是一个非常重要的原则,没有人喜欢不断地去重复相同的代码,更不要说那更为可怕的维护。

另外,代码的抽象级别,也可以使人们更好的理解复杂的事物。

从某种程度上来说,视图、函数、存储过程的出现就是为了解决这样的问题。

 

我们需要用到前面所设计过的表结构,来讲述视图的使用。

重复一下其表结构:

create table rate_result(
     id int identity, -- only for reading
     policyid int not null,-- 保单ID
     vehicleid int, -- 车辆ID
     covcode varchar(100), -- 险种
     premium money, -- 保费
     constraint pk_rate_result primary key nonclustered (id)
)

 

create table policy(
    id int identity(10001, 2),
    code varchar(100),
    effective_date date,
    experation_date date,
    constraint pk_policy primary key(id)
)

 

 

我们的项目中有这样的需求,我们需要知道一个保单的基本信息,及其总保费,我们可以首先完成一个视图如下:

create view dbo.vw_policy_premium
as

select policyid,
        premium = sum(premium)
from dbo.rate_result
group by policyid

go

 

然后可以这样写查询语句:

select  *
from dbo.policy p
        left join dbo.vw_policy_premium pp on p.id = pp.policyid

视图的编写非常简单,没有参数,可以是一个非常非常复杂的查询语句,也可以是一个很简单的查询语句。

视图的使用更加简单,使用方法和表的查询一模一样。

 

也许有人会说,我们完全可以不用视图来完成同样的功能。显然是可以的,但是有时候使用视图会使代码变得很优雅,易维护。

posted @ 2017-09-06 17:10  你若安好那还得了  阅读(103)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3