Microsoft SQL Server 2005技术内幕_第5章-视图 Views
该表每个月占一行,其中包含销售数量(qty列)和月份(mnth列)。要注意我使用了DATETIME数据类型存储月份以支持日相关的计算。尽管我只关心其中的年份和月份,我也必须在日部分指定一些值。所以我把每个月的第一天作为日部分,并假设子夜为默认时间。当你需要显示日期时,你总是可以
9
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
还记得吗?在SQL Server 2000中不能用分号结束CREATE VIEW语句,也不能用圆括号作为TOP的输入。VSgn视图的内容如表5-6所示。 有5-6 VSgn 的内容
10
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
11
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
12
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
13
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
14
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
计算分组因子的逻辑有点复杂。根据sgn(趋势)分区并按mnth的顺序计算出行号(rn)。它的意思是,对于每一种趋势,你可以有多个连续的组,它们之间会有间断。试着思考一下在某个趋势中随着rn的递增,mnth值如何变化。只要它们还位于同一个连续组中,它们都会以1为单位递增。一旦出现间断,mnth的递增量会大于1,而rn的递增%
5.5 更新视图
视图是一个虚拟的表,当你查询视图时,SQL Server会展开视图的select语句并对基础表执行查询。视图不仅可以作为SELECT查询的目标,它也可以作为修改语句的目标。当你修改视图时,SQL Server将修改基础表。这时的视图就像是一个代理或媒介。当然,如果不允许直接修改基础表,只允许修改视
15
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
16
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
17
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
注意其中消费者的属性,比如公司名称(cname),每个订单都有重复。
假设用户拥有该视图的UPDATE权限,他想把订单ID(oid)等于1001的公司名称修改为 Cust 42 。该用户会提交下面的更新。
18
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
19
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
20
Microsoft SQL Server 2005技术内幕_第5章-视图 Views
21