SQL 语法顺序:
SELECT [DISTINCT]
FROM
WHERE
GROUP BY
HAVING
UNION
ORDER BY
LIMIT/ROWNUM
这 8 种关键字是有严格顺序的,
这 8 种关键字可以选择的写其中几种,但是顺序要按照上面的顺序来。
SQL 执行顺序:
关于 SQL 语句的执行顺序,有两点值得我们注意的地方:
-
FROM 才是 SQL 语句执行的第一步,并非 SELECT 。数据库在执行 SQL 语句的第一步是将数据从硬盘加载到数据缓冲区中,以便对这些数据进行操作。
-
SELECT 是在大部分语句执行了之后才执行的,严格的说是在 FROM 、WHERE、GROUP BY 之后执行的。理解这一点是非常重要的,这就是你不能在 WHERE 中使用在 SELECT 中设定别名的字段作为判断条件的原因。
SELECT T.k + T.y AS a FROM T WHERE a = 10 -- a 在此处不可用,因为SELECT是最后执行的语句!如果你想重用别名a,可以重新写一遍 a 所代表的表达式:
SELECT T.k + T.y AS a FROM T WHERE (T.k + T.y) = 10
但是并不是所有的数据库都是按照上面的这个执行顺序来执行的,既然并不是所有的数据库都按照上述方式执行 SQL , 我们只要记住SQL 语句的语法顺序和其执行顺序并不一致,这样我们就能避开一些一般性的错误。