购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 什么是SQL

大家好!欢迎你们参加《快速念咒:MySQL入门指南与进阶实践》读者见面会——“七嘴八舌聊SQL”!我是主持人詹姆士!在这样一个信息化的时代,我们每个人都会和数据打交道。事实上,管理和分析数据是一种能力,这种能力就好比莎翁驾驭文字或万磁王掌控金属。而我相信通过对SQL的学习,大家对数据的管理和分析能力将更上一“栋”楼。没错,这种感觉就像坐上观光电梯,眼前的风景不断地快速变换着。瞧啊,今天到场的3位嘉宾学员,他们名字的首字母刚好组成了“SQL”,既然这样,就请3位嘉宾先来聊聊他们各自对SQL的理解吧。因为这一概念对于很多初学者来讲都还是天空中一团模糊的云朵,而我们需要将它揉捏成大家所熟悉和喜欢的形状。瑟琳娜,由你先开始可以吗?

非常乐意!大家都知道,弹钢琴时需要按照乐谱的指示来进行演奏。那么类似地,数据库也会根据我们输入的SQL语句执行相应的操作。所以单从这个角度来看,大家不妨将一段SQL语句视为一段乐谱,因为它们的本质作用都是表达。只不过SQL难以表达情感,因为SQL语句的阅读对象是数据库,且它传递的信息是我们对数据的操作指令。因此,我对SQL的理解就是——SQL是一门用来与数据库沟通的计算机语言。

瑟琳娜,想必你一定很爱好音乐吧。希望你能再用音乐类比为我们讲解一下SQL的主要功能。

我想我可以借用一句歌词:I wish I can select my name from your heart。没错,这句歌词的字面含义是,我希望能在你的心中找到我的名字。暂且抛开其中的浪漫情愫,相信大家一定注意到了,这句歌词体现了一种查询行为。事实上,查询信息正是SQL的主要功能,大家可以透过SQL的全称看到这一点——Structured Query Language(结构化查询语言)。

非常巧妙的解释!根据歌词中的查询行为,我们可以抽象出一条这样的表达式:SELECT something FROM somewhere。事实上,这正是SQL的标志性语句。大家只要熟练运用好这条表达式,就足以从容应对SQL的大部分使用场景了!

真的是这样吗?看来SQL真是一项易于掌握的技能。说实在的,我原本一直以为SQL很难上手,抱歉,这也许是我对计算机语言的固有印象。不过,既然劳伦斯表示“SELECT something FROM somewhere”就是SQL的标志性语句,那我就放心多了。因为它的字面含义真是太容易理解了:从哪里去找什么东西。这种感觉就像背着铁锹去挖宝藏!相信每个男孩在成长的过程中都憧憬过这样一段经历。

没错,查询信息的过程就像在数据库中挖宝藏,这个比喻很棒!正如刚刚聊到的那样,“SELECT...FROM...”的字面含义是,从哪里去找什么东西,站在阅读者的角度来看就是这样的。而我们作为书写者,要做的就是对这条表达式填充“物名”和“地名”。例如,如果要表达去河边的大柳树下挖宝藏,那么对应的填充结果就是SELECT precious FROM river_willow。

事实上,使用SQL编写一条查询语句就像在宣读一份指使性的声明。因为我们不需要告诉计算机如何去做,只需要通过一段声明告知它我们想要的是什么信息。这种感觉就像当一位甩手掌柜,虽然你想要得到宝藏,但却无须亲自动手。因为你只需要将宝藏的埋藏地点和宝藏类型告知计算机即可,然后选择一个舒服的姿势躺在扶手椅里,一边喝着刚从冰箱里拿出来的橙味汽水,一边看着计算机在指定地点挥汗如雨。至于它挥舞的是铁锹还是锄头,以及采用何种方式挖掘都无关紧要。这些都用不着你来教它,过一阵子它自己就会捧着宝藏递到你的眼前。

啊哈,躺在舒服的扶手椅里,一边喝着饮料一边发表通告,当甩手掌柜,这正好符合SQL语言的特点和基本调性——声明性、指使性。再结合瑟琳娜之前的理解来看,她的定义还可以变得更加完整:SQL是一门用来与数据库沟通的声明性计算机语言。

请问一下,我们的读者后续会从“SELECT...FROM...”这条表达式入手学习SQL,是吗?说实在的,这条短小精悍的语句看起来真的很友好。

没错,它就类似于一句简单的“你好!”当我们开始学习一门新的外语时,往往都是从这样一句亲切的问候开始的。

确实如此,一句“你好!”不仅简单友善,还能拉近人与人之间的距离,它作为学习新外语的第一步再合适不过了。奎妮,你好像有话想说?

是的,詹姆士,我对将SQL定义为一门语言有不同的看法,这源于我生活中的一些感悟。去年冬天,我在滑雪俱乐部认识了两位新朋友,他们分别是来自西班牙的艾维利亚和来自意大利的安东尼奥。在日常生活中,无论我在见面时对艾维利亚说Hola,还是在碰到安东尼奥时打招呼说Ciao,他们都会热情地予以回应,因为他们都明白我是在使用语言进行问候。但是请大家细想一下,虽然SQL的交流对象是数据库,可是数据库并不像我们人类一样具有语言的概念。换句话来讲,虽然SQL语句会在我们和数据库之间传递信息,但是作为“语言”,它却是单向仅被我们所认可的。一条在我们看来字面含义非常直观的SQL语句,传递到数据库那边,就会变成一串与操作相对应的符号。因此,我并不认为SQL是一门语言,原因是对“语言”这一概念缺乏双向的统一认可。事实上,我对SQL的理解是,SQL是一套由基础英文单词和常用符号组成的书写系统。

哦?将SQL定义成一套书写系统,这我还是第一次听说。不过集思广益的讨论更能给读者们带来启发!

也许我再分享一篇新闻报道可以增加大家对这种理解方式的认同——某处的实验室里有一只聪明的黑猩猩,它能通过在机器屏幕上输入“我要一块苹果”,从而获得一块苹果作为奖励。

请大家思考一下,虽然从表面上看,这只聪明的黑猩猩是在使用我们人类的语言和机器进行沟通。但实际上,它也许并不像我们一样清楚这句话的真正含义,因为它在乎的只是这样操作以后能够得到奖励。要证明这一点并不困难,如果让黑猩猩把“我要一块苹果”换成“我不要吃苹果”,但结果同样是获得一块苹果作为奖励的话,那么很显然,黑猩猩只是将我们的人类语言当成了一种单方面索取奖励的工具而已。

事实上,这篇新闻报道的有趣事件对我们今天的讨论内容很有启发。既然SQL的主要功能是查询信息,那么我们其实与那只聪明的黑猩猩一样,都只是将“语言”当成了一种单方面的索取工具,只不过黑猩猩索取的是一块苹果,而我们索取的是有分析价值的信息数据。

奎妮的观点确实很有道理。同学们在日后的学习中就会发现,其实大多数SQL语句都是由一些描述性很强的基础英文单词(关键词)组成的,例如刚刚聊到的SELECT和FROM。虽然这些关键词会引导计算机执行操作,但我认为它们更重要的作用是引导我们形成书写思路。而且在很多情况下,关键词的书写顺序与它的执行顺序并不一致,大家以后就会感受到SQL的这一特点。

不过话说回来,如果只是把语言当作一个单方面的索取工具,那么就会缺少很多互动。说到这里,我有些好奇,劳伦斯,请问你有尝试过使用SQL语言和别人交流吗?

哈哈,我没有。但我想,如果有人这样做了,那他一定是达到了某种“业精于勤,而更精于嬉”的新境界!说实在的,在听了瑟琳娜和奎妮的理解之后,我认为SQL就只是一个工具而已,只不过它具备一定的语言性质。因此描述得更准确一点就是,SQL是一个用来与数据库沟通,且披着语言外衣的工具。请想象一下,如果在某天晚上,就在你准备进入梦乡的时候,突然有一位身穿白色大褂的老人,哆哆嗦嗦地降临在了你的床边。他一边用慈祥的目光注视着你,一边却用庄重的口吻向你表示:“亲爱的年轻人,你是被上天选中的孩子,因此我有义务开小灶将你培养成一名先知。如果你能学会使用SQL来查阅‘命运’这个数据库,那么你将预见未来生活中的种种际遇……”

天啊!如果这种事情真的发生在我身上,我想我查询信息的欲望会在一瞬间爆发:癌症被攻克的关键性技术是什么?什么时候开始星际旅行?高智能机器人是否真的会出现?当然,顺便了解一下最有潜力的股票也无妨。说实在的,在这种情况下,SQL可能就真的只是一个工具而已。就像那只聪明的黑猩猩,只要能获得一块苹果作为奖励,它并不在乎输入的是“今晚月色真美!”还是“你们快点放我出去!”

没错,每个人可能都对SQL有不同的理解:一门语言、一套书写系统,抑或只是一个单纯的索取工具。因为不同的理解取决于大家使用SQL的普遍场景及思考问题的角度,所以没有必要对SQL做统一且绝对的定义。希望各位同学在日后的学习中可以收获属于自己的理解! Z7mEhSABsTh7DV4dsJiCiMrCq82waV9kD8cQPcIcjzveJAxs/q7T0Ym2NJ6H4GPx

点击中间区域
呼出菜单
上一章
目录
下一章
×