Mas*_*ler 7 sql grammar history
在几乎任何正式结构化的信息集中,您可以从开始到结束开始阅读,或偶尔从结尾开始阅读(例如,街道地址).但在SQL中,尤其是SELECT查询,以便正确理解它的含义你必须从中间开始,在FROM子句.这可能使长查询很难读取,特别是如果它包含嵌套的SELECT查询.
通常在编程中,当某些东西似乎没有任何意义时,它背后有一个历史原因.从SELECT而不是FROM开始没有意义.有谁知道这样做的原因?
Rus*_*Cam 11
我认为,就英语句子的结构而言,SQL语句的结构方式具有逻辑意义.基本上
I WANT THIS
FROM HERE
WHERE WHAT I WANT MEETS THESE CRITERIA
Run Code Online (Sandbox Code Playgroud)
我觉得这没有多大意义,至少在英语中说
FROM HERE
I WANT THIS
WHERE WHAT I WANT MEETS THESE CRITERIA
Run Code Online (Sandbox Code Playgroud)
在SQL维基百科条目简要地介绍了历史:
在20世纪70年代,IBM圣何塞研究实验室的一个小组基于Edgar F. Codd在其有影响力的论文"大型共享数据库的数据关系模型"中引入的模型开发了System R关系数据库管理系统.随后,IBM的Donald D. Chamberlin和Raymond F. Boyce创建了结构化英语查询语言(SEQUEL)来操作和管理存储在System R中的数据.缩写词SEQUEL后来改为SQL,因为"SEQUEL"是英国的商标 -总部位于Hawker Siddeley的飞机公司.
原始名称明确提到英语,解释语法.
深入挖掘,我们找到了FLOW-MATIC编程语言.
FLOW-MATIC,最初称为B-0(商业语言版本0),可能是第一种类似英语的数据处理语言.它由Grace Hopper发明并指定,商业变体的开发始于1955年的Remington Rand,用于UNIVAC I.到1958年,编译器及其文档一般可用并在商业上使用.
FLOW-MATIC是通用业务导向语言背后的灵感,这是目前仍在使用的最古老的编程语言之一.SEQUEL遵循这种精神,采用类似英语的语法设计(20世纪70年代是现代的,与20世纪50年代和60年代相比).
从视角来看,"现代"编程系统仍然使用背后的古老思想访问数据库
MULTIPLY PRICE BY QUANTITY GIVING COST.
Run Code Online (Sandbox Code Playgroud)
我必须不同意.SQL语法不是由内到外的.
从第一眼看,您可以判断查询是SELECT,INSERT,UPDATE还是DELETE数据(SQL的其余部分,例如DDL,故意省略).
回到SELECT语句混淆:SQL的目标是声明性的.这意味着你表达你想要的东西而不是你想要它.因此,首先说明您想要的内容(您选择的属性列表),然后向DBMS提供有关应该从哪个位置查找的其他信息.
在最后放置WHERE子句也很有意义:想象一个漏斗,顶部宽,底部窄.通过在语句末尾添加WHERE子句,可以减少结果数据量.对查询应用限制除了底部以外的任何地方都需要开发人员转过头来.
最后的ORDER BY子句:一旦数据通过漏斗,就对其进行排序.
JOINS(JOIN标准)确实属于FROM子句.
GROUPING:基本上是在漏斗进入另一个漏斗之前通过漏斗运行数据.
SQL sytax很甜蜜.关于它没有任何内在的东西.也许这就是为什么即使在数十年之后SQL如此受欢迎.它很容易掌握并且有意义.(虽然我曾经遇到过一个7页(A4大小)的SQL语句,这让我花了很长时间才能解决这个问题.)
它被设计成像英语一样.我认为这是主要原因.
作为旁注,我记得LINQ的初始预览是在它(select ... from ...)之后直接建模的.这在后来的预览中被更改为更多的编程语言(因此范围向下).Anders Hejlsberg特别提到了关于SQL的这个奇怪的事实(这使得IntelliSense更难并且与C#范围规则不匹配)是他们做出这个决定的原因.
无论如何,无论好坏,它都是它,改变任何东西都为时已晚.
| 归档时间: |
|
| 查看次数: |
1676 次 |
| 最近记录: |