在线求解一个查询问题

写一个存储过程,需要判断几个字段,比如我要对比一个表里的费用合计、本月结余、是否已付款,未付款用户的本月结余是空的,但是我要判断,如果他的费用合计小于本月结余,就要在余额里面显示负数,如果费用合计大于上月结余,就要用上月结余减去本月的费用合计,这个该如何实现,请哪位大侠帮忙
但是我要判断,如果他的费用合计小于本月结余,就要在余额里面显示负数,如果费用合计大于上月结余,就要用上月结余减去本月的费用合计'---是不是写反啦?应该余额足够的扣,余额不足不扣吧?

你没说明 你的情况
你的带负数的数据是 已经算好的 需要修改 还是 在计算以前就要处理?

各种情况 你没说全 如果 余额是0 是一种情况 如果 余额不为0 但是 计算结果是负数 是一种
还一种 就是 计算 结果是正数的 
如果没有基本理解就直接东拼西凑硬写代码:
1) 很容易把表理解成一个二维数组,从而习惯性地写出低效的循环处理,还会觉得为什么这个“数组”这么难用,连下标访问都不能。(提示:表是记录的集合)。
2) 一般的过程式编程语言,只要语法能通过,逻辑上问题一般不会太大;而写出语法上能通过的SQL语句,逻辑却可能差之毫厘谬之千里。(比如少写一个条件导致笛卡尔积)。盲人摸象式的学SQL,很容易被SQL各种“零散”的语法特性迷惑,觉得SQL好难学啊,而只要从关系的角度理解表,SQL简直就像说话一样简单。
3) 一般的过程式编程语言,出错了最多程序crash掉,终止调试、修改代码、重新运行即可;而SQL操作的都是数据库里的持久层数据,一个操作不当的错误运行,就可能导致数据破坏、数据丢失等灾难性后果。(提示:良好的SQL编码习惯,权限合理分配,勤做备份)。

这几种是DBMS为了满足某些特定需求而提供的功能。使用这些功能要付出难调试、难维护、低性能的代价。

千万不要因为它们看起来复杂就觉得很高深,更不要因为觉得使用这些复杂功能看起来很牛,就让它们在代码中频频出现。这些功能应该掌握,但要尽量避免使用。如果数据库设计合理,这些东西基本是可以避免使用的。

武侠片中有个规律:使用的武器越是复杂、神秘、骇人的角色,其武功越是一般。而绝顶高手往往一把片刀、一把扫帚甚至赤手空拳就能威震江湖。记住IT领域的KISS原则,简单的往往是最好的,正是此理。

虽说学习编程最好是边看边练,但由于SQL(面向集合的说明式语言)与常见的过程式编程语言在思维上有明显不同,所以学习SQL的一开始,最好先对表和SQL的查询有个基本理解(可参看如何学习SQL一帖,特别是第二部分),再开始写SQL代码。
单机数据库(如sqlite、Access等,Excel也勉强可以算是)是应用于单个计算机的数据库引擎,通常不具备网络连接功能,适用于小型应用;程序部署时,一般只需要附带数据文件即可。有时也称作桌面数据库。
服务器级数据库(如Oracle、DB2、SQL Server、MySQL、PostgreSQL等)是具备网络连接功能、可作为单独数据库服务器的DBMS,适用于大型信息系统;程序部署时,需要专门安装相应的DBMS,甚至要单独进行数据库服务器的架构设计。此类数据库是我们讨论的重点。

“数据库”这个词已经被滥用,可能用来指一个数据系统(如中国移动的号码数据库),可能用来指一种数据存储技术(如关系数据库和NoSQL数据库),还可能用来指DBMS(如人们常说SQL Server是数据库软件)。这种混乱已然形成,恐怕难以改变(比如上文的描述即是如此)。我们只能根据上下文来判断具体含义。
按最狭义的技术含义,数据库(Database)是指位于一个数据库服务器实例上的一个库,而DBMS则是指类似SQL Server、Oracle等等此类软件。初学者要注意这些概念之间的差别。论坛上常常见到这样的帖子:“连不上数据库”、“数据库打不开了”,又没有上下文,可见发问者概念混乱,搞得解答者也是一头雾水。

来源:nba直播

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值