SQL查询操作处理流程(二)

2015-01-24 01:42:01 · 作者: · 浏览: 8
ount(*)的时候,某一行即使都是NULL,也会被算作一行的,例如: \
这一点需要在具体的应用上特别注意,尤其是使用OUTER JOIN的时候会添加一些NULL,可能由于使用count(*)而不是count(字段名)导致不正确的计数。 8)、这一步执行的是SELECT操作,然后SELECT出现在查询语句的最前面,但是它是到了第八步才被执行,这一步是对VT7上的选择SELECT指定的列。生成VT8。另外,在SELECT中不能对前面字段的别名进行使用,也就是SELECT的别名只有在整个SELECT子句执行完之后才有效。 \

这一点需要在具体的应用上特别注意,尤其是使用OUTER JOIN的时候会添加一些NULL,可能由于使用count(*)而不是count(字段名)导致不正确的计数。 8)、这一步执行的是SELECT操作,然后SELECT出现在查询语句的最前面,但是它是到了第八步才被执行,这一步是对VT7上的选择SELECT指定的列。生成VT8。另外,在SELECT中不能对前面字段的别名进行使用,也就是SELECT的别名只有在整个SELECT子句执行完之后才有效。

11)、最后一步执行的是OFFSET ... LIMIT子句,这一步就是在上面生成的VT10表中,从指定的OFFSET开始选择指定的行数,OFFSET也可以省略,而写成LIMIT m, n.它的含义和LIMIT n OFFSET m是一样的。
好了,一般的SQL查询语句都是按照这个顺序执行的,当然具体的逻辑查询和物理查询方案这里我们没有涉及,仅仅是介绍每一步的执行顺序和它的作用,当然其中还涉及一些mysql中的规则,以后使用SQL查询语句之前要首先理好这个顺序,然后再去考虑使用什么样的查询语句才能得到希望的结果。