参考并转载 http://www.cnblogs.com/bhtfg538/archive/2008/11/25/1341016.html
First:
(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语句第一个出现,但几乎总是最后处理。
其实从逻辑上来说,每个步骤都会产生一个虚拟表,该虚拟表用作下一个步骤的输入.