SQL 查询艺术 (T-SQL)
引言
好久没写技术文章了,准备了许久,终于开始动工了。
笔者从事 SQL Server 编程开发 7 年,技术上算不得很高,在开发上也算得上经验丰富吧。 这一套文章总结了笔者多年开发中的集累 , 也参考了不少技术书籍和 优快云 论坛上众多高人的经验分享。
这不是一系列语法教程,建议有一定基础的朋友参考。这也不是一套大而全的教程,应该说是一系列零散文章以关系逻辑为主线的有机组合。
大纲
1, 语法
语法与提醒
基础释疑
解题招式
2, 关系逻辑
逻辑基础
逻辑题小例子
空间想像
3, XQuery
XML 基础知识
XQuery
关系逻辑中的 Xquery
4, 编程
结构组织
性能调优 ( 代码级 )
5, 综合解题举例
对于逻辑,大多数人都认为所指为业务逻辑。在这里我希望能以我的观点区别一下:
业务逻辑是需求,需求需要做到怎样,我们在编程中流程应该怎么跑。
关系逻辑是比业务逻辑更细小的单位,在满足业务逻辑的基础上写查询时,看你的脑子怎么转。
关系逻辑是本套文章整个系列的重点, T-SQL Query 一书很好,看了之后我受益非浅,在书的附录里也有很多不错的逻辑题, 但我觉得有一个问题,那就是这本书还是比较侧重于从语法层面讲命令的使用,当然也有内部的执行逻辑和调优方面的知识,总觉得缺了些什么,那就是我在这系列里要说的我们写查询时大脑中的关系逻辑, 或者说书里也有在讲关系逻辑但没有讲到分析关系逻辑问题的方法。 如果说本套文章是对 T-SQL Query 的补充,那么我只能笑自己太抬举自己了, 只是希望籍此引发更多朋友的思考,脑,是越用越灵的。当然有大牛专门出关于这方面的书的话,那么我肯定会买的。
诚然,逻辑能力,是需要长时间培养的,靠读几页书想获的很大的提高,显然不实际,本套文章也不列外, 如果看完此套,有一些朋友在写查询时愿意多去考滤逻辑,有了更简洁的,更符要求的查询,那么本套文章的目的也就达到了。
对于为什么还要在第一部分讲语法,我想这个就必多说了,对一些语法特性不了解,不可能写出简洁的,高效的查询,关系逻辑更无从谈起。
第二部分,无疑是本套的重点。本套主要以 T-SQL 为主 ( 这里指 SQL Server 。 当然, Sybase 也是用 T-sql ,但语法有差异,特别是内部的执行,差别很大,在需要的地方,我会注明 ), 对于关系逻辑来说,各种数据库都一样 ( 就像一个算法,用 C++, Basic, Java 都可以实现一样 ), 只是换套语法, 在需要的地方,也会给出其它数据库下的写法的参考。
XQuery 为什么提出来放在这里?其实如果你不感兴趣的话,这一章也可以略过,实际上,在你的系统中也完全可以不用到它。但有兴趣有精力的话,还是建议看看,至少因为 XML 越来越流行(尽管可能在你的系统中用处并不大) , 也可能因为你的系统中用到了 XML 类型,这时你就可能无法避开它。同时,对于一些解题,运用它也可能简化你的逻辑或写法。
结构组织,从侧重上来说,也跟 T-SQL Program 一书一样,只不过不讲那么多,只是说说在组织一段代码时,怎么样可能好些。 至于性能调优涉及面太广,从系统架构,到网络设施,从硬件配置到库结构设计 … 在这里,我们只谈查询怎么写可能获得更好的性能。
在这里特别强调,在这一部分之前,前面几部分都侧重讲关系逻辑,可能需要的是更优秀的逻辑,而不是最好的性能,也即是说,前几部分侧重逻辑,不关注性能。
但愿读完此文,你能和我有一样的感受:关系逻辑如此奇妙
未完等续 ..