旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

Sql的实行历程申明【C#.Net教程】,说明,过程,执行

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:29评论:0


导读:SQL不同于与其他编程言语的最显著特性是处置惩罚代码的递次。在大数编程言语中,代码按编码递次被处置惩罚,然则在SQL言语中,第一个被处置惩罚的子句是FROM子句,只管SELECT...
SQL 不同于与其他编程言语的最显著特性是处置惩罚代码的递次。在大数编程言语中,代码按编码递次被处置惩罚,然则在SQL言语中,第一个被处置惩罚的子句是FROM子句,只管SELECT语句第一个涌现,然则险些老是末了被处置惩罚。

每一个步骤都邑发生一个假造表,该假造表被用作下一个步骤的输入。这些假造表对调用者(客户端运用程序或许外部查询)不可用。只是末了一步生成的表才会返回 给调用者。假如没有在查询中指定某一子句,将跳过响应的步骤。下面是对运用于SQL server 2000和SQL Server 2005的各个逻辑步骤的简朴形貌。
Code highlighting produced by Actipro CodeHighlighter (freeware)

-->(8)SELECT (9)DISTINCT (11)<Top Num> <select list>

(1) FROM [left_table]

(3) <join_type> JOIN <right_table>

(2) ON <join_condition>

(4) WHERE <where_condition>

(5) GROUP BY <group_by_list>

(6) WITH <CUBE | RollUP>

(7) HAVING <having_condition>

(10 )ORDER BY <order_by_list>

逻辑查询处置惩罚阶段简介 (实行递次)

FROM:对FROM子句中的前两个表实行笛卡尔积(Cartesian product)(交织连接),生成假造表VT1
ON:对VT1运用ON挑选器。只要那些使<join_condition>为真的行才被插进去VT2。
OUTER(JOIN):如 果指定了OUTER JOIN(相对于CROSS JOIN 或(INNER JOIN),保存表(preserved table:左外部连接把左表标记为保存表,右外部连接把右表标记为保存表,完整外部连接把两个表都标记为保存表)中未找到婚配的即将作为外部行添加到 VT2,生成VT3.假如FROM子句包含两个以上的表,则对上一个连接生成的效果表和下一个表反复实行步骤1到步骤3,直到处置惩罚完一切的表为止。
WHERE:对VT3运用WHERE挑选器。只要使<where_condition>为true的行才被插进去VT4.
GROUP BY:按GROUP BY子句中的列列表对VT4中的行分组,生成VT5.
CUBE|ROLLUP:把超组(Suppergroups)插进去VT5,生成VT6.
HAVING:对VT6运用HAVING挑选器。只要使<having_condition>为true的组才会被插进去VT7.
SELECT:处置惩罚SELECT列表,发生VT8.
DISTINCT:将反复的行从VT8中移除,发生VT9.
ORDER BY:将VT9中的行按ORDER BY 子句中的列列表排序,生成游标(VC10).
TOP:从VC10的最先处挑选指定数目或比例的行,生成表VT11,并返回调用者。

注:步骤10,按ORDER BY子句中的列列表排序上步返回的行,返回游标VC10.这一步是第一步也是唯一一步能够运用SELECT列表中的列别号的步骤。这一步不同于别的步骤的 是,它不返回有用的表,而是返回一个游标。SQL是基于鸠合理论的。鸠合不会预先对它的行排序,它只是成员的逻辑鸠合,成员的递次可有可无。对表举行排序 的查询能够返回一个对象,包含按特定物理递次构造的行。ANSI把这类对象称为游标。明白这一步是正确明白SQL的基本。

由于这一步不返回表(而是返回游标),运用了ORDER BY子句的查询不能用作表表达式。表表达式包含:视图、内联表值函数、子查询、派生表和共用表达式。它的效果必需返回给希冀获得物理纪录的客户端运用程序。比方,下面的派生表查询无效,并发生一个毛病:

select *

from(select orderid,customerid from orders order by orderid)

as d

下面的视图也会发生毛病

create view my_view

as

select *

from orders

order by orderid

在SQL中,表表达式中不允许运用带有ORDER BY子句的查询,而在T—SQL中却有一个破例(运用TOP选项)。

所以要记着,不要为表中的行假定任何特定的递次。换句话说,除非你肯定要有序行,不然不要指定ORDER BY 子句。排序是须要本钱的,SQL Server须要实行有序索引扫描或运用排序运转符。

以上就是Sql的实行历程申明的细致内容,更多请关注ki4网别的相干文章!

标签:说明过程执行


欢迎 发表评论: