这是一直困扰着我的事情。将 FROM 子句放在 SELECT 之前不是更有意义吗?每当我写sql,尤其是连接时,我总是先弄清楚FROM子句,然后再写SELECT。
另外,将 FROM 放在首位可以在编辑器中实现更好的智能感知。
有谁知道将 SELECT 放在首位的原因是什么?只有我一个人为此烦恼吗?
one*_*hen 16
是的,这很奇怪而且违反直觉。休·达文(Hugh Darwen)对这种情况如何发生提出了理论:
您是否认为 SELECT-FROM-WHERE 是理所当然的,或者您是否像我一样,对 System R 团队应该放弃编写任意复杂表达式的正常方式而转而采用完全特殊的东西感到非常好奇,人们可能会说,相当独裁......?
事实上,在 20 世纪 60 年代,为了生成报告,尤其是临时报告生成,出现了各种脚本语言(现在我们倾向于这样称呼)。我们在前关系型 DBMS 中有一种这样的语言,称为终端业务系统 (TBS),我从 1969-77 年间就在 IBM 工作。我们的语言要求用户通过一系列步骤指定所需的报告,这些步骤必须按规定的顺序给出......
后来美国的 IBM 开发了一种有点类似但更复杂的报告生成器,作为名为(平淡无奇,就像当时 IBM 的风格)通用信息系统 (GIS) 产品的一部分......当我第一次看到 SQL 时,我的第一反应是“哦不!GIS 之子?请不要这样!” 我在这一点上可能是完全错误的。我所感知到的相似性可能是虚幻的,即使不是,我也没有确凿的证据表明 System R 团队中的任何人都熟悉 GIS。事实仍然是,固定行动顺序的总体风格是当时的主流。我假设 SQL 的 SELECT-FROM-WHERE 就是由此产生的。
根据唐纳德·D·张伯伦 (Donald D. Chamberlin) 的口述历史采访,语法类似于英语:
\n\n\n这是我们第一次尝试将语言完全基于英语关键字,以便您可以通过对英语单词的直观理解来阅读查询。查询可能会显示如下内容:\xe2\x80\x98从经理等于 John Smith 的员工处选择薪水。\xe2\x80\x99 来自诸如 \xe2\x80\x98select、\xe2\x80\x99 \xe2\x80 之类的英文单词\x98from\xe2\x80\x99 和 \xe2\x80\x98where\xe2\x80\x99,您可以很好地了解查询的内容。
\n