数据库视图
在编程的世界里面,代码重用是一个非常重要的原则,没有人喜欢不断地去重复相同的代码,更不要说那更为可怕的维护。
另外,代码的抽象级别,也可以使人们更好的理解复杂的事物。
从某种程度上来说,视图、函数、存储过程的出现就是为了解决这样的问题。
我们需要用到前面所设计过的表结构,来讲述视图的使用。
重复一下其表结构:
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
视图的编写非常简单,没有参数,可以是一个非常非常复杂的查询语句,也可以是一个很简单的查询语句。
视图的使用更加简单,使用方法和表的查询一模一样。
也许有人会说,我们完全可以不用视图来完成同样的功能。显然是可以的,但是有时候使用视图会使代码变得很优雅,易维护。
浙公网安备 33010602011771号