您的位置:首页 > 数据库

sql查询语句执行顺序

2014-10-30 12:11 387 查看
1.查询语句的语法:

select --查询动作

[distinct|all] --描述列中的数据是否去除重复记录

select_list --需要查询的列,也可以说是占位符。可以使一个字段,也可以是多个字段。

from table_list --from:关键词,表示数据的来源;table_list:数据来源列表,允许有一个活多个列表;可以使表名,也可以是视图,还可以是别名

[where_clause] --查询条件部分

[group_by_clause] --group by 子句部分

[having condition] --having 子句部分

[order_by_clause] --排序部分

2.查询语句执行顺

step1:首先执行from子句,组装来自不同数据源的数据,即根据from子句中的一个或多个表创建工作表。

如果在from子句中的有两个或多个表,数据库管理系统将执行cross join运算对表进行交叉连接,作为工作表。

step2:如果有where子句,实现基于指定的条件对记录进行筛选,即数据库管理系统将where子句列列出搜索

条件作用于step1步中生成的工作表。数据库管理系统将保留哪些满足搜索条件的行,删除哪些不满足搜索条件的行。

step3:如果有group by子句,它将数据划分为多个分组。数据库管理系统将step2步生成的结果表中的行分成多个组,

每个组所有行的group_by_expression字段具有相同的值。接着,数据库管理系统将每组减少到单行,而后将其添加到

新的结果表中,用以替换step1步生成的工作表。

step4:如果有having子句,它将筛选分组。数据库管理系统将having子句列出的搜索条件作用有step3步生成的“组合“表

中的每一行。数据库管理系统将保留那些满足搜索条件的行,删除那些不满足搜索条件的行。

step5:将select子句作用于结果表,删除那些结果表中不包含在select_list中的列。如果select子句包含distinct关键词,数据库

管理系统将从结果中删除重复的行。

step6:如果有order by子句,则按指定的排序顺序规则对结果进行排序。

step7:对于交互式sql语句,在屏幕上显示结果;对于嵌入式sql语句,使用游标将结果传递给宿主程序。

注意:DBMSl值看做是相等,而且所有的null值都放入自己的组中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: