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

3.2.7 课后阅读:《胶囊时报》专栏采访

詹姆士: 大家好,我是主持人詹姆士,很高兴又和你们见面了!在本期节目中,我们有幸邀请到了韦尔集团(WHERE.Group)的4位过滤工程师!

AND/OR/IN/NOT: 你好!主持人,很高兴见到你!

詹姆士: 伙计们,欢迎你们!听说4位在数据过滤方面都有自己的特长,可以简单地和读者们聊聊吗?据我所知,《快速念咒》的专栏作家为了介绍你们可真是煞费苦心啊。

AND: 这可真是辛苦彭派特了!说实在的,我很高兴他没有按照英文单词的字面含义,即按照“和”“或”的定义来介绍我和OR。彭派特从操作出发,将我们的工作定义为了“同时满足”和“分别满足”。事实上,SQL语言中的“AND”和“OR”已经不再是大家熟悉的那两个英文单词了。

OR: 确实如此,其实这里面隐藏着一个重要信息,那就是RDBMS眼中的SQL语句和我们眼中的SQL语句是不一样的。在我们看来,SQL语句不过由一些描述性很强的基础英文单词组成,以至于小学生也能轻松理解。但是RDBMS对单词没有概念,所以在它眼中,这些英文单词只是一串与操作相对应的符号而已。

詹姆士: 我想我能听明白。那么如何把单词与符号联系在一起呢?

AND: 举个例子吧。请大家想象一下,如果一家时装店剑走偏锋,改用七进制数来标注价格。那么十进制数标价为“998”的一件衣服就会变成“2624”。其实这里的“998”和“2624”都是一串符号,且它们都对应相同的实际金额——玖佰玖拾捌元。只不过由于我们的大脑过于习惯十进制,所以就会迅速在“998”与“玖佰玖拾捌元”的实际金额之间画上等号。其实“SELECT”和“FROM”这类关键词就好比“998”这类符号,仅凭字面含义,我们就可以准确地理解它们。

OR: 没错,然而这种理解方式并不总是有效的。例如“AND”“OR”就不能用“和”“或”来理解。这类关键词就好比七进制数的“2624”,因为它们的实际含义与字面含义存在一定的出入。我这么说你可能听不太懂,但如果将“AND”换成“Andrew”,再把“OR”改为“Orlando”,你就会体会到实际含义与字面含义存在的出入了:

詹姆士: 好吧,看来在理解某些关键词时,我们要在一定程度上抛弃它们的字面含义,然后从操作角度进行分析。现在让我们请IN聊聊他的工作内容。

IN: 在很多情况下,我和OR协调的过滤机制都是“分别满足”。如果选择我,那么你写下的SQL语句会更加简单。不过我并非总是能替换OR,例如“SELECT*FROM Spice WHERE color='黑'OR status='鸭嘴';”就不行,因为这两个过滤要求的所属列不一致。

OR: 是啊,如果你总是能替换我,那我可就要失业了。

IN: 其实我们每个人都有不可取代的用途。当大家接触子查询后就会知道,我还能引导其他SELECT语句建立复合检索,也就是建立查询中的查询。

詹姆士: 看来读者以后还会再和你见面!那么你呢,Mr.NOT,你一言不发,很抱歉被我们冷落在了一边。

IN: 他一直都是这样,沉默寡言。因为他只要一开口就会说“不”!

(NOT点了点头)

詹姆士: 啊,真是言简意赅。 UMW+mZj4Gvwqd2sB+bUpHTu85KEAhXNVq9EdF5qazYlRi2qOQMW8/WqZWNSNE48K

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