就业数据资源平台
当前位置:首页 > 数据库技术
计算机三级辅导:SQL逻辑查询处理

  先看一下sql查询处理的步骤序号:












就业数据资源平台
(8) select (9) distinct (11)
2 (1) from
3 (3) join
4 (2) on
5 (4) where
6 (5) group by
7 (6) with {cube | rollup}
8 (7) having
9 (10) order by

如果没有在查询中指定某一个子句,将跳过相应的步骤。

逻辑查询处理阶段简介:

1、 from:对from子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表vt1。

2、 on:对vt1应用on筛选器,只有那些使为真才被插入到tv2。

3、 outer (join):如果指定了outer join(相对于cross join或inner join),保留表中未找到匹配的行将作为外部行添加到vt2,生成tv3。如果from子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到处理完所有的表位置。

4、 where:对tv3应用where筛选器,只有使为true的行才插入tv4。

5、 group by:按group by子句中的列列表对tv4中的行进行分组,生成tv5。

6、 cute|rollup:把超组插入vt5,生成vt6。

7、 having:对vt6应用having筛选器,只有使为true的组插入到vt7。

8、 select:处理select列表,产生vt8。

9、 distinct:将重复的行从vt8中删除,产品vt9。

10、order by:将vt9中的行按order by子句中的列列表顺序,生成一个游标(vc10)。

11、top:从vc10的开始处选择指定数量或比例的行,生成表tv11,并返回给调用者。

  编辑特别推荐:

  sqlserver中删除重复数据