在 sql中 多行sql语句怎么执行,是从上往下 还是从下往上??????求解

 我来答
althiy
推荐于2017-11-24 · TA获得超过293个赞
知道小有建树答主
回答量:533
采纳率:100%
帮助的人:380万
展开全部
SQL不同于其他编程语言的最明显特征是处理代码的顺序。在大多数据库语言中, 代码按编码顺序被处理。但在SQL语句中,第一个被处理的子句式FROM,而不是第 一出现的SELECT。SQL查询处理的步骤序号:(8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
2 (1) FROM <left_table>
3 (3) <join_type> JOIN <right_table>
4 (2) ON <join_condition>
5 (4) WHERE <where_condition>
6 (5) GROUP BY <group_by_list>
7 (6) WITH {CUBE | ROLLUP}
8 (7) HAVING <having_condition>
9 (10) ORDER BY <order_by_list>
以上每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这 些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只有最后一步生成的 表才会会给调用者。如果没有在查询中指定某一个子句,将跳过相应的步骤。
逻辑查询处理阶段简介:
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,并返回给 调用者。
此文转载:中国IT实验室
dengwenjie628
2011-10-29
知道答主
回答量:5
采纳率:0%
帮助的人:9万
展开全部
自上而下,从内而外。这要看你的语句结构形式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
faraway_xj
2011-10-29 · TA获得超过2675个赞
知道大有可为答主
回答量:2482
采纳率:0%
帮助的人:1336万
展开全部
楼上正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式