机房收费系统中遇到的SQL语句问题

个人版机房收费系统正在进行中,遇到了几个有关SQL语句的问题。

1.sum函数的使用:

在结账部分,要求出某个表中某一列的和。在第一次机房系统中,我不知道sum函数的存在,很傻很天真地用循环一个一个往上加。下面以求所有卡中余额的和来说说sum函数怎么使,SQL语句为:select sum(cash)from T_Card。这个格式不是固定的,可以根据需求更改,比如求多列的和:select sum(列名1),sum(列名2)...from [表名] where...。查询出来的结果只有一行,如果只查一列的和,就是一行一列,那个和在DataTable.Rows(0).Item(0)中。

2.coalesce函数的使用:

上面的sum函数轻轻松松地解决了求和的问题,随之又出现一个问题。比如说查询当天的充值金额一列的和,但当天没有充值记录,这时就返回一个“NULL”,在代码中如何处理呢?几经周折,找到了coalesce函数。当查询不到符合条件的结果时,我们让它返回"0",在SQL语句中这样来写:SELECTCOALESCE(SUM(cash),0) FROM T_Card WHERE
...

3. convert日期转换:

当初建表的时候,为了省事儿日期和时间没有分开,使用datetime数据类型,这样输入的时候日期和时间连在一起了。在结账的时候麻烦出来了,比如我要查询“2014-8-7”的充值记录,但我的表中时间都是“2014-8-7 hh:mm:ss”格式的。在我绝望地以为要改表的时候,输了一长串表达不清的句子给百度,居然找到了解决办法,利用convert日期转换。

convert的语法是:convert(类型,表达式/字段,样式),其中样式限于DateTime类型,"120"表示”2014-8-7 20:50:31“这种格式。具体的SQL语句这样写:

select coalesce (sum(addCash),0) from T_Recharge where (CONVERT(varchar(10), time, 120) = CONVERT(varchar(10), GETDATE(), 120)),表示从充值表中得到当天充值金额的总和。

小结:虽然在一年前就学过SQL语句,在两个系统中多次用到,而且在自考中这部分也占有一定的份量,但来来回回就会写最基本的那几句。通过以上遇到的几个问题,让我觉得知识真是学无止境,同时也体会到米老师那句“不怕不知道,就怕不知道”的含义。面对海量的知识,我们不可能啥都精通,但要知道它的存在。遇到问题,能够借助现代网络资源即时解决,从而高效学习,不断培养自己的学习能力。

机房收费系统中遇到的SQL语句问题,布布扣,bubuko.com

时间: 2024-10-14 12:38:06

机房收费系统中遇到的SQL语句问题的相关文章

机房收费系统中“事务”的应用

做机房收费系统已经接近尾声了,随着系统业务的完善.对各个过程功能要求的提高,对代码的要求就变的愈加苛刻,很多时候实现一个功能需要对数据库中很多的表进行操作,而这些操作都是在这个功能实现了的前提之下才应该去执行的,所以,如果我们单纯地实现功能,而不去考虑他们之间的因果关系,就会出现在某一个功能中部分操作完成了而其他的操作由于由于终端并没有完成,最终,就会对我们的数据造成破坏,使系统的性能大大降低,严格地说,这样的系统是失败的.不合格的.举例来说,如果你在存钱的时候由于供电影响系统终止,而你已经把钱

机房收费系统中sqlhelper的应用

在接受了三层的思想之后,sqlhelper被传的沸沸扬扬,它给我们的编码带来多少优势.让编码者少花了多少时间.多少精力,等等的赞美之词不绝于耳.自己也是将信将疑的,毕竟自己没有亲身经历,所以没有很大的体会.而如今,自己多次使用了sqlhelper,穿梭在各层之间确实也体会到了它带给我们的简便之处,结合很多人的版本自己编写了属于自己的那一版,以下便是具体代码: <span style="font-family:KaiTi_GB2312;font-size:18px;">Imp

【机房收费系统】磕磕绊绊中总结

每一个庞然大物来之前,总是心里不自觉的退缩一下.这一次,把我自己当成了奥特曼. 命名规范文档 最先看的是这个.有了标准后,才能见其名 知其意. 数据库设计 敲完三层登陆小demo,这一次重新着手,从ER图开始设计数据库.又翻了翻自考的书,把机房收费系统中可能抽出来的实体画出来 又开始一个个找联系.转换为逻辑结构.可能根据业务的不同,表和主键会稍微有些变化.比如,是否允许一个学生有多张卡,退卡之后原来的卡号还能否再注册,退卡是是否要删除记录等修改或添加一些辅助标记字段,也涉及到一些其他问题,例如添

机房收费系统———如何将MSFlexGrid中的数据导入到Excel中

机房收费系统进行了一段时间了,虽然说大体上跟学生信息管理系统一样,不过也有不一样的地方.比如说报表.如何将MSFlexGrid中德数据导入到Excel中等等.这些东西原来没有接触过,第一次接触难免有些陌生.这些问题困扰了我好长-时间,一看到它头都大了.不过,提高班名言——不将就是发现的源动力.本着这一原则,慢慢的攻克了这些问题. 机房收费系统中好几个地方需要将MSFlexGrid中德数据导入到Excel中,这是在学生信息管理系统中没有的功能.首先,首先需要在vb里面引用我们所需要的对象:Micr

机房收费系统重构之存储过程的使用

从一开始对于机房收费系统的无从下手,到现在已经接近尾声,像冬天的迷雾一样,随着时间散开了去,对于其也是越来越清晰,想一想,这种学习的过程还真是美妙. 当然只学习不去总结是没有意义的.今天我就来把存储过程的使用总结一下.拿用户注册来说,就是往数据库里添加用户,以方便更多的用户使用.那么用户注册我们要注意到什么呢? 1.通过卡号判断用户是否已经存在. 如果不存在该用户: 2.将信息写入学生表. 3.更新充值记录表 4.更新卡表中的余额. 我们分析可以得到,如果不存在该用户,我们需要同时改动三个表.当

机房收费系统 之 结账漏洞

声明:以下内容只对将卡表和退卡表放在同一张表的同学适用! 最近大家都已经开始做VB.NET机房收费系统重构版,在这里跟大家聊聊我在机房收费系统中发现的漏洞. 在机房收费系统中有这样一个窗体--结账.个人认为结账的功能是:领导对操作员注册退卡进行结账,简单的说就是领导来收钱,如果你是一个操作员,每天充值退卡,你要知道你这段时间都赚了多少钱. 今天要说的重点就是卡表的结账!在结账中,有一个购卡,有一个退卡.也就是说,对于同一张卡,它注册后需要结账一次,退卡后也需要结账一次. 让我们来看看我数据库的卡

机房收费系统—《存储过程》

前两天博客写了视图和触发器,本来不想写存储过程了,想想会用就行了.但是自己在用的过程中越到很多问题,不做个总结一定还会用错的. 机房收费系统里我为什么要用它呢? 在这之前我的回答是:因为大家都在用,所以一定会用到. 现在我的回答是:因为它可以将常用的或者很复杂的工作,用SQL语句写好并存储起来,用户在可以直接通过存储过程的名称进行调用. 相对于使用SQL语句,存储过程的好处是: 1.执行速度快 存储过程创建的时候,数据库已经对其进行了一次解析和优化,存储过程一旦执行,就会保留在内存中,下次再执行

机房收费系统--存储过程

在这次机房收费系统中学习到的东西还真不少.E-R图,视图,存储过程,触发器等等.这些东西都是在之前学习过的,这次运用到实践中,收获倍增. 运用存储过程的好处 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用. 3.过程可以重复使用,

机房收费系统——视图的运用

对于视图在一年前的数据库学习和自考中就学到了,那时只是理论学习,这次在机房收费系统重构中亲自实践,加深了对视图的理解. 定义: 从数据库系统外部来看,视图是用户从一个特定的角度来查看数据库中的数据.从数据库系统内部来看,视图是由SELECT语句组成的查询定义的虚拟表,在数据库中并不真实存在.好比在提高班有学术部,安全部,纪律部等等,这些部门就是视图,需要给哪个部门开会就通知哪个部门.这些部门的人都是提高班各个期的(基本表),并且每个人都是独一无二的. 操作: 由于视图只是存储的SQL Selec