WEB开发网
开发学院数据库DB2 DB2中多种常用功能的解决方法 阅读

DB2中多种常用功能的解决方法

 2007-05-20 16:18:39 来源:WEB开发网   
核心提示: SELECT NAME FROM ADDRESSFETCH FIRST 10 ROWS ONLY于是现在我们已看到您给行编号并且任意选择了一个子集,假设我们因某些性能上的好处而给行编号,DB2中多种常用功能的解决方法(5),这必将破坏关系模型,我们几乎完全妥协了,并使用一个 0 字节的文件
SELECT NAME FROM ADDRESS
FETCH FIRST 10 ROWS ONLY

于是现在我们已看到您给行编号并且任意选择了一个子集。假设我们因某些性能上的好处而给行编号,这必将破坏关系模型。我们几乎完全妥协了,并且已经犯了关系七宗罪中的六宗。还有一条关系誓约您没有触犯:让我们实时地给行编号,牺牲掉性能和关系纯洁性吧。我们如何证明这样做的正确性呢?在因特网上谴责它吧。

【导读】描述了多种常用功能的解决方法,而这些功能并不完全符合关系誓约。

向使用浏览器的客户显示公司数据显然证明了违背对关系纯洁性和性能推崇所作的承诺。您可以用 rownum 或 rank 函数实时地给结果集赋予行号。下面我们为用来记录地址的表中的行排序,并选择第 11 行到第 20 行。结果集由名称和实时创建的名为 rn 的列(它给行编号)组成:

SELECT * FROM (SELECT NAME, rownumber() OVER
(ORDER BY NAME)
AS rn FROM ADDRESS)
AS tr WHERE rn BETWEEN 11 and 20

rank 更为复杂,并且它允许您以排序的顺序标识联系,对于足球联赛非常理想:

create table football (team char(10), points int)
insert into football values ('United', 20)
insert into football values ('Arsenal', 20)
insert into football values ('Liverpool', 10)
select rank() over
(order by points desc) as place,
team, points
from football
PLACE TEAM POINTS
1 United 20
1 Arsenal 20
3 Liverpool 10

清空表 — 无需通知日志记录程序(截断表)

现在你已经得到了很多精巧的方法来处理你的数据了,我们再来学习一个小把戏。其他的数据库产品有被称为“截断表”的功能,即在不进行日志记录的情况下删除表中的所有数据,而保留表的结构(如果不想保留表结构,我们就使用 DROP TABLE 命令了)。如果想在 DB2 中得到这种功能,可以执行带有 REPLACE 选项的 LOAD 命令,并使用一个 0 字节的文件作为导入数据源,由于 DB2 的 LOAD 操作是不做日志的,所以可以通过这个小骗局来达到我们的目的。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:DB 多种 常用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接