( 8) SELECT ( 9) DISTINCT ( 11) < TOP_specification> < select_list>
( 1) FROM < left_table>
( 3) < join_type> JOIN < right_table>
( 2) ON < join_codition>
( 4) WHERE < where_condition>
( 5) GROUP BY < group_by_list>
( 6) WITH { CUBE | ROLLUP}
( 7) HAVING < having_condition>
( 10) ORDER BY < order_by_list>
熟悉 SQL 的人应该一眼就能看出来上面语句的作用,基本包括了我们一般查询表的写法, SQL 不同于其他编程语言最明显的特征就是他的代码顺训。在大多数语言中,代码按编码的顺序被处理,但在 SQL 语言中,第一个被处理的子句是 FROM 子句,尽管 SELECT 语句第一个出现,但几乎总是最后处理。
其实从逻辑上来说,每个步骤都会产生一个虚拟表,该虚拟表用作下一个步骤的输入(上面的标记代表执行步骤 的顺序)。