大家一谈数据库,就觉得非常高深莫测,深不见底,非凡人敢去触摸。但Excel的话,没人敢说自己不会使用吧(相反一大堆人的简历上写着精通OFFICE所有软件套件)。换作其他非微软厂商的数据库,的确很容易产生这样的畏惧感,包括笔者在内,对其他数据库也是不敢靠近。但Sqlserver,出自微软之手,可以让你大为改观,请看下文一一述说。
小小插曲
在微软系的产品系列中,大家都可以从网络上非常容易找寻得到,微软也是大放水,对盗版破解容忍度非常高。
但是其他厂商的产品,你可知道没这样的福气了,近期在做一个项目时,接触到SAP的产品,想下载一个其在PowerBI上使用的数据连接驱动,奇葩到搜索全网后,不止百度,连google都不能找到这些驱动,只能从其官网上下载,并且只能用商业用户的帐号体系才能下载到(不知道是否是管理员之类的高级帐号才能访问,没有细究)。
所以,对于非微软系的产品上手程度之复杂,从此也可一窥而知,连个软件都不提供,连练手的机会都没有,谈何学习呀,所以也不要指望他们从用户的体验角度能够做出多好的产品。
也谈微软系产品
用过Windows、OFFICE软件的人,都能感受到微软产品的细腻,无穷无尽的界面化操作,操作过程中的自提示,友好的向导功能带领新用户快速上手,并且配以非常详尽的官方文档和示例说明,全方位地掌握每个细节。
在Sqlserver上,也不例外,看完此篇,笔者相信你也会认可此篇所提到的观点:像使用Excel一般使用Sqlserver。
使用Excel是一种怎样的体验?
在OFFICE产品中,要数Excel的使用群体、使用频率最为广泛,这里说的Excel,其实也可类比在其他Word、PowerPoint等组件上。
Excel一款小小的数据处理分析小工具,蕴含了非常多的功能,大部分的功能都是提供了菜单化操作、结合鼠标、键盘快捷键,可以非常流畅地在数据海洋里遨游。任何一个新用户接触Excel,都不会产生太大的恐惧感。
随着学习的一步步加深,对现有的功能的重复性繁琐操作开始提出一些要求,能否帮我自动化一些来处理,这样就带出了宏和VBA的层面。
可以用录制宏的方式,记录当前的操作步骤,再结合一点点的VBA知识,用编程语言的变量、循环、选择结构等,将自动生成的宏代码略略加工一下,即可完成自动化的重复性工作,开始脱离界面的重复性机械操作。
没法达到宏和VBA的使用水平也不必沮丧,因为有一些走得更远的人,已经不止于让自己手头的工作自动化起来,还为大部分初中级用户做出了插件,让代码封装起来,直接回归界面化操作输出给普通用户使用。例如Excel催化剂插件就是很经典的案例。
且看Sqlserver的使用和Excel有多像
Sqlserver作为一款优秀的数据库软件,其使用的群体远不像普通人所定义的那么窄,不止于专业的软件开发者、数据库管理人员DBA才会使用得上,对于普通的数据工作者,其仍然有天然的亲和力,可以让类似Excel用户的群体来过渡使用。
几乎一切操作都可以界面化
访问Sqlserver服务器的方式,一般情况下是使用其客户端工具SSMS来完成(估计太优秀了,也没有什么第3方的客户端引起太大的关注,其他数据库产品倒有好多第3方客户端的出现,足见微软所做的产品之优秀)
在SSMS上操作Sqlserver,几乎所有的操作,都可以通过类似操作Windows、OFFICE软件那样,通过图形化界面,鼠标式完成。
SSMS界面
上图上方的菜单栏、左侧的数据库对象树结构,通过菜单和对象树鼠标右键,几乎可以满足我们日常所需操作的任务。
当然一般来说,熟练之后,特别是写数据查询SQL,通过右侧的编辑区敲代码完成也不难,类似我们使用Excel时,对函数写得非常熟练,不想使用函数向导直接敲函数名、函数参数的体验差不多。
界面化操作也不代表需要掌握所有功能,也不代表每个功能有界面操作就很容易理解,就像学习Excel一样,有些功能如数据分析工具,规划求解等,虽然也是界面,但也需要深刻理解其实现原理才能真正用得好。Sqlserver的功能较Excel这样的大众工具软件更难理解,后面会再次写相关文章介绍以数据分析师的视角,最应该掌握什么功能,哪些功能投入产出比更高。
像录制宏一般地自动生成SQL语句
Excel里有录制宏功能,帮助我们快速学习VBA,在Sqlserver上,同样有类似于录制宏的界面操作实际对应的SQL脚本是什么的功能。
对表、视图、存储过程等右键都有生成相应SQL的快捷操作
创建表的SQL,里面包含很多很难记住的SQL语法可以自动生成
其他的一些界面化操作,也可生成对应的SQL语句
创建用户这种低频的SQL语句,首选界面生成
简单改造生成脚本自动化
有了以上的SQL自动生成后,理解好SQL语句的含义,哪些地方可以使用简单变量替换即可生成一条新的SQL命令,然后可以借助在Excel上拼接字符串的方式快速生成多条SQL命令,进行批量化操作。
Excel上生成多条SQL语句
复制到SSMS上脚本编辑区,点击运行即可完成
更高级别的脚本自动化
数据库有存储过程,类似Excel的VBA代码过程片段的概念,可以通过编程语言的方式,写各种复杂的逻辑处理,最后封装成一个过程(方法),下次直接运行此过程即可实现批量操作。
存储过程丰富的可编程性,实现更复杂功能
在Sqlserver的存储过程中,可以使用几乎所有的T-SQL语句及命令,生成的结果甚至可以生成新的表数据,将数据导出到外部,数据大范围转换等等,结合代理作业的功能,更可以定时自动化开启。
结语
Sqlserver入门真心不难,对于数据分析工作者来说,无需像专业开发,数据库运维等掌握一大堆高深的知识,亦可轻松唯我所用,只用其对数据分析工作最精华的部分,相信一个正确的引导,可以让学习使用Sqlserver的过程,类似于学习使用Excel一般地愉悦,后续更多精彩,欢迎继续关注。
笔者未来聚焦在数据领域的分享,不限于Excel,会分享更多Sqlserver、dotNET、Azure、PowerBI等话题,升级数据分析的能力,欢迎继续关注。