大家好~多日未见,甚是想念。最近疯狂的迷上了“吃鸡”, 一个看似“突突突”,“哒哒哒”的枪战类游戏,已经大有超越“农药”的势头,不知道各位有没有同道中人,有机会一起组队啊!嗷!~!~
回到正题,既然我们是一个严肃的公众号,自然需要将干货排在第一位。上一篇开始,我们翻开了数据库的“牌子”,在接下来的一段时间,绝大多的篇幅将和数据库相关,大家不用质疑公众号的本质,Excel VBA除了对繁复手工操作有着非常好的解决方案以外,处理数据更是一把好手。Excel的诞生本就是为了更好的为数据服务,而用什么可以最大限度的去快速处理数据呢?不用瞎猜了,那就是我们说到的数据库处理语言。当前市面上有着各种数据库应用程序,比较常见的比如微软的SQL Server,Oracle(甲骨文),MySQL,以及很多大公司内部使用的DB2和较为新兴的MangoDB等等。(不好意思,我只是随便举了几个例子,如果没说到你常用的那个也别来较真。。)而综上几个较为常用的数据库,也都有着一些各自独有的脚本写法,我们先不去管这么多,还记得之前我们就树立了一个思想么?“不求啥都会,只求用得上。”比较幸运的是,虽然每种数据库语言的高深用法都各有秋,不过基础篇都是惊人的一致,对,就是我们目光所关注的那一部分,绝大多都保持着一样的规则。
今天,我们来介绍SQL的第一个关键字,“SELECT”
稍懂一些英文的朋友肯定对这个词不陌生,“挑选”,那么我们如何进行挑选呢?其实很简单,下方高能,非战斗人员请及时撤退。
SELECT [列名] FROM [表名] Where [列内容]=XXX
这就是最基础的SELECT语句写法,你可能会有疑问,我写了这一串,有什么用啊?嗯。。Excel内置的“FIlter”功能你应该使用过吧,中文版对应的应该叫做“筛选”,就是在列上增加一个小漏斗,可以根据条件筛选出想看到的数据。
对,这个筛选的功能,就是将SELECT语句变成了一个可视化的操作,然而这个方法也会有一些弊端,就是筛选条件比较复杂时,你需要来回的操作,我们还是用学生表做一个例子。
比如现在我们的手上拿着全年级学生的分数汇总表,我们想看一下全年级有多少语文超过了80分或者数学超过了90分的同学。如果此时是你在操作,你会怎么办呢?绝大多人应该会首先筛选出语文>80的数据,复制粘贴到一个新的表单,然后再去复制数学大于90的,贴到一起,去除重复数据,然后嘴角露出诡异的笑容,SO EASY。其实,这么做并没有什么不妥,只是效率太低了,学过之前Excel VBA的同学可能会跳出来说,用循环!根据每一行数据,判断语文是否>80或者数学是否>90,如果满足,就复制数据去新表单。如果你产生了这种想法,我要为你鼓掌,很棒,不过,但是,巴特!循环读取每一行数据进行判断然后复制,是一个耗时较多的过程,执行过程中你可能会误以为系统已经“死”掉了,其实他一直在勤勤恳恳的工作只是方法不够快罢了,今天,我们就尝试用一下新的方法,极速解决这个拿数据的问题,不要眨眼,因为这个句子真的很短,可能会被你忽略掉。
select * from [学生表名] where [语文]>80 or [数学]>90
嗯。。这个获取数据的速度,也许只需要0.1秒,具体的效果演示我们放在下一节内容,因为我们是直接使用Excel来进行数据操作,这里就牵扯到一个叫做ADO的东西,其实并没有什么复杂的,我们只去学习如何使用,内部的一些其他很复杂,很高深的功能,暂且放一放吧。
对于上方一行简单的代码解释一下
01
“*”的意义
是说我需要所有的列,如果你只希望展示其中的部分列,可以修改为
select [语文],[数学] from XXX where AAA=BBB
02
为什么要在列和表的名字上加括号
还记得最初的时候我们提过么,英文是编码世界里的通用语言,所以对于中文的支持度不是非常高,在这里我建议各位尽可能将列名定义为英文,会减少很多不必要的麻烦,当然这只是一方面,另一方面,如果你的列名中存在空格或者一些其他特殊字符,亦或是你的列名和一些系统内置关键字冲突了,用中括号括起来,告诉系统,别开枪,自己人,我就是个单纯的列,没有大规模杀伤性武器,当系统看到了这个中括号后,就会放行了。
03
where后的逻辑语句
where后放的是逻辑语句,也就是你希望根据哪些逻辑来生成最后的数据,这里我们写的是语文数学成绩,你当然可以进行扩充,只要逻辑是正确的,那么数据就错不了。
ps:封面图片来自网络,如涉及到版权,请尽快联系本公众号删除,多谢。
文末彩蛋
领取专属 10元无门槛券
私享最新 技术干货