Posts

每天进步一点点:SQL的注释

19 comments·0 reblogs
oflyhigh
85
0 views
·
min-read

最近O哥奋发图强每天都在努力学习,比如说写点Python程序,又比如说写点PHP代码,有时候也用SQL来做一些数据分析,等等等等。

image.png
(图源 :pixabay)

虽然忙忙碌碌把自己搞得晕头转向也没啥成果产生,但还是乐此不疲。不由得曾经一个前上司说的一句话:生命在于折腾

确实如此呀,模仿那句经典的我思故我在,咱也整上一句我折腾故我在,哪天真的彻底不折腾了,那一定是嘎了。话说,这句会被载入史册不?

说到用SQL做数据分析,O哥写了好多条好大坨(咦,为什么要用这个量词呢?好像不太文雅呀😳)极其复杂的SQL查询。

然后O哥就发现,要在好大坨的极其复杂的SQL查询上做一些修改让它完成不同功能,是一件极其令人抓狂的事情,因为改来改去,把SQL弄得乱七八糟,更加复杂了。

于是O哥想了一个极傻的方法,那就是每实现一个功能,备份一条大坨SQL,就导致LINQPad中的SQL查询越来越多,找起来越来越复杂。

让O哥想一下,以前有没有遇到过类似问题呢?又是怎么解决的呢?抓耳挠腮想了半天,发现还真没遇到过。

以前我都是在程序中使用SQL,就是用来做最最最基本、最最简单的查询,然后再又程序来进行数据加工,得到我想要的数据,所以根本就谈不上复杂,也不存在把自己搞迷糊的情况。

而现在的情况是O哥总想着让SQL自己就是一个程序,把所有能做的事情都做了,不用再额外使用程序对数据进行处理加工了,这样当然就弄得极其复杂了。

习惯了这样操作而且发现这样操作大多时候可以满足我的需求之后,再也不想用以前的方法了。那如何破解当前的窘境呢?

以前写程序的时候会根据功能或者逻辑定义多个文件,还会选择把常用的逻辑包装成函数(或者模块之类的),但是在SQL查询中这样弄无疑会让原本简单的事情更加复杂,而且我总担心会不会影响性能?

在研究半天各种高级功能晕头转向之后,我突然想到何不使用注释呢?如果针对不同的功能使用注释进行相应的开关,不就搞定了嘛?

注释大法是我以前在各种程序打开关闭不同功能时常用的方法,只是以往从来没有在SQL中这样用过(简单的SQL也根本不需要这样用),倒是犯了灯下黑的错误呢。

SQL注释分单行和多行注释,语法分别是单行注释用-- 多行注释用/* ... */,当然也可以不嫌麻烦用单行注释来逐行注释。

单行注释的例子(以及逐行注释):

-- SELECT * FROM Users 
-- WHERE Age > 18 
-- ORDER BY Name 

多行注释的例子:

/* 
注释的第一行 
注释的第二行 
注释的第三行 
*/ 
SELECT * FROM Users 

是不是很简单?

让人有些头疼的是,不同语言,单行多行注释更有各的方法,由于经常摆弄不同语言,总犯把注释用错的低级错误。所以我整理出来一个简单的表格,这样以后就不怕弄错了。

注释类型SQLC 语言PHPPython
单行注释-- 注释内容// 注释内容// 注释内容# 注释内容
多行注释/* 注释内容 *//* 注释内容 *//* 注释内容 */''' 注释内容 '''

补充一下,PHP单行注释也支持# 注释内容,但是这样并不常用。PHP的多行注释不但支持''' 注释内容 '''也支持 """ 注释内容 """

还有就是这些语言中都不支持多行注释/* ... */ 的嵌套使用,会导致语法错误,也要注意。在C语言和C++中我以前还时常用宏定义来开关某段代码,也是非常方便的。

哎,又扯远了,不多扯了,继续折腾去喽。