仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2434|回复: 9
打印 上一主题 下一主题

[学习教程] MSSQL编程:SQL技能:创立用来按小时呈报的查询

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:25:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于insert操作,只需要把event_type改成DELETE_ROWS_EVENT;对于delete操作,改成WRITE_ROWS_EVENT创立|技能要创立一个能够每一个小时呈报的查询,起首要创立一个表格。该表格一列纪录日期,而没偶然间信息;另外一列纪录钟点。上面的表格有一列纪录了分歧的处置范例。比方,我们能够按小时找出处置范例的总数。

CREATETABLEtest
(StartTimeDATETIMENOTNULL
DEFAULTCURRENT_TIMESTAMP,
StartDateDATETIMENOTNULL
DEFAULTCONVERT(DATETIME,CONVERT(CHAR(10),CURRENT_TIMESTAMP,110)),
StartHourINTNOTNULL
DEFAULTDATEPART(hh,CURRENT_TIMESTAMP),
TranTypeINTNOTNULL
CONSTRAINTck_TranTypeCHECK(TranTypeIN
(
1,--insert
2,--update
3,--delete
)
DEFAULT1
)
GO
接上去,拔出test的数据来摹拟一个大概的样本。

INSERTtest(StartTime,TranType)VALUES(CURRENT_TIMESTAMP,3)
INSERTtest(StartTime,TranType)VALUES(CURRENT_TIMESTAMP,2)
INSERTtest(StartTime,TranType)VALUES(CURRENT_TIMESTAMP,3)
GO

DECLARE@hrint
SET@hr=DATEPART(hh,DATEADD(hh,-1,CURRENT_TIMESTAMP))

INSERTtest(StartTime,TranType,StartHour)_
VALUES(DATEADD(hh,-1,CURRENT_TIMESTAMP),3,@hr)
INSERTtest(StartTime,TranType,StartHour)_
VALUES(DATEADD(hh,-1,CURRENT_TIMESTAMP),1,@hr)
INSERTtest(StartTime,TranType,StartHour)_
VALUES(DATEADD(hh,-1,CURRENT_TIMESTAMP),2,@hr)
GO

然后用一个查询来找出按日和小时的处置总数。

SELECTStartDatetran_day,
StartHourtran_hour
,CASEtrantypeWHEN1THENinsert
WHEN2THENupdate
WHEN3THENdelete
ELSEunknown
ENDtrantype,
COUNT(*)tran_total
FROM
Test
GROUPBY
StartDate,
StartHour
,trantype
ORDERBYStartDate,StartHour
COMPUTESUM(COUNT(*))BYStartDate,StartHour
GO

往失落test能够清空test表格。

DROPTABLEtest
GO
有了数据以后,我们就要想一个比较统一的方法来闪回。上面我们说了对于DML操作,可以通过反向执行所有逆操作来实现,对于语句里面的DDL,只能直接跳过。原因是一个DDL不一定有直接的逆操作。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-17 13:19:31 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-20 19:10:52 | 只看该作者
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西
蒙在股里 该用户已被删除
地板
发表于 2015-1-29 15:40:22 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
透明 该用户已被删除
5#
发表于 2015-1-29 15:40:22 来自手机 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
老尸 该用户已被删除
6#
发表于 2015-2-6 02:30:55 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
简单生活 该用户已被删除
7#
发表于 2015-2-15 03:29:01 | 只看该作者
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
乐观 该用户已被删除
8#
 楼主| 发表于 2015-3-11 18:44:18 | 只看该作者
只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
admin 该用户已被删除
9#
发表于 2015-3-19 07:55:43 | 只看该作者
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
莫相离 该用户已被删除
10#
发表于 2015-3-27 16:10:51 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 01:41

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表