探讨自定义SQL语句的应用

2017-01-16 11:11何代其
东方教育 2016年19期
关键词:探讨应用

何代其

摘要:在大数据肆虐的今天,数据正在迅速膨胀并变大,已经渗透到每一个行业和业务职能领域,成为重要的生产因素,它决定着企业的未来发展,虽然很多企业可能并没有意识到数据爆炸性增长带来问题的隐患,但是随着时间的推移,人们将越来越多的意识到数据对企业的重要性。

关键词:探讨;自定义;SQL语句;应用

信息化越好的企业,对数据会越来越重视,如何从数据库中检索数据,最常见的方法莫过于使用简单的DELETE、INSERT、SELECT、UPDATE等标准SQL语句,要不就是技术尖端的存储过程,但这两种方法很有局限性。事实上介于标准SQL语句和存储过程之间的自定义SQL语句更灵活,更方便。

一、使用标准SQL语句

标准的SQL语句使用方法很简单,如:SelectCommand="SELECT * FROM [manger] where ID<>1" SelectCommandType="Text",由于标准的SQL语句是默认值,所以一般把SelectCommandType="Text"省略。

二、使用存储过程

尽管存储过程功能强大,但使用却很简单,比如:

SelectCommand="xytotal" SelectCommandType="StoredProcedure">

PropertyName="SelectedValue" Type="String" />

其中xytotal是存储过程名,nf是参数。

三、使用自定义SQL语句

1.使用CAST函数构造数据类型

在工资查询时,可选择起止年月,但数据库没有年、月数据类型,只有日期类型,一般用每月的1日表示该月,因此要用年、月和“-1”日进行构造,即cast(@年+'-'+@月+'-1' as datetime),由此构成Where条件。如:SelectCommand="SELECT [应发合计],[代扣合计],[实发金额],……,[月份] FROM [simplelist] WHERE 月份>= cast(@起年+'-'+@起月+'-1' as datetime)and 月份<= cast(@止年+'-'+@止月+'-1' as datetime)"

2.使用CASE WHEN THEN ELSE END选择字段

SQL命令中的case...when...then...else...end条件查询不同于where,case...when...then...else...end在from前面,可以改变记录中某字段的值,不能决定是否显示该记录;而where在from后面,不可以改变记录中某字段的值,但可以决定是否显示该记录。简单地说,case是垂直筛选字段,而where是水平筛选记录,如SelectCommand="SELECT 学院,CASE 省名 WHEN '合计' THEN 省名 ELSE 省区市 END AS 地区,人数 FROM totalview"。

3.使用if else 选择SELECT语句

在就业管理系统中,在班级列表中,有具体班级和全部两种情形的选项,导致where条件也不同,又不能用case进行构造,可使用if else 进行选择,具体构成如下:SelectCommand="if(@班级<>'全部')SELECT [姓名],[就业单位],[联系电话],…… FROM [out] WHERE([班级] = @班级)else SELECT [姓名],[就业单位],[联系电话],…… FROM [out] WHERE(substring(毕业时间,1,4)= @毕业时间)AND([学院] = @学院)"。

这种情形多数开发人员一般采用存储过程,并且表面上更简单,但本质是相同的,不过表达有所不同,因此各有各的用途。

4.构造UPDATE语句

不同情形更新的字段不同,照说可以用存储过程来完成,但一般情况下,UPDATE字段都好几个字段,甚至几十个字段,那么使用存储过程几乎不可能了,这时不得不用if else进行构造,这就是几乎没有UPDATE的存储过程原因。如UpdateCommand="if(@就业去向='自由职业')UPDATE [out] SET ……,[自由工作所在地] = @自由工作所在地,[自由职业内容] = @自由职业内容,[自由职业本人声明] = @自由职业本人声明 WHERE [ID] = @ID else if(@就业去向='升学')UPDATE [out] SET ……,[升学名称] = @升学名称 WHERE [ID] = @ID else if(@就业去向='参军入伍')UPDATE [out] SET ……,[部队名称] = @部队名称 WHERE [ID] = @ID"。

严格地说,所有的存储过程都可以用SQL语句完成,反过来,所有的SQL语句也都可以用存储过程(视图)来表示,那么究竟什么时候用存储过程?什么时候用SQL语句?一般来说,简单的查询用SQL语句,复杂且参数少的查询用存储过程,参数多、较复杂的查询只能由自定义SQL语句完成,或者说越简单就用SQL语句,越复杂就用存储过程,介于两者之间就用自定义SQL语句,它们之间没有绝对的界限。

参考文献:

[1]姚永一,SQL Server数据库实用教程,北京:电子工业出版社,2010.

[2]高云,SQL Server 2008数据库技术实用教程,北京:清华大学出版社,2011

[3]何玉洁,数据库原理与应用(第二版),北京:机械工业出版社,2011

[4]壮志剑,数据库原理与SQL Server,北京:高等教育出版社,2008

猜你喜欢
探讨应用
环境科学专业《环境生态学》课程教学改革探讨
刍议小学足球教学的训练教学方法
体育旅游产业的特征及发展策略探讨
税收筹划的效应问题
多媒体技术在小学语文教学中的应用研究
分析膜技术及其在电厂水处理中的应用
GM(1,1)白化微分优化方程预测模型建模过程应用分析
煤矿井下坑道钻机人机工程学应用分析
气体分离提纯应用变压吸附技术的分析
会计与统计的比较研究