| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1083 人关注过本帖
标题:询问一个关于SELECT执行过程的语句
只看楼主 加入收藏
luxuluxu
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-7-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
询问一个关于SELECT执行过程的语句
SORRY小弟分数不够 请见谅




SELECT 表1.* FROM 表1,表2 WHERE 表1.字段1 = 表2.字段1
 
--------------
我在网上搜索到这个解释

分析器会先看语句的第一个词,当它发现第一个词是SELECT关键字的时候,它会跳到FROM关键字,然后通过FROM关键字找到表名并把表装入内存。接着是找WHERE关键字,如果找不到则返回到SELECT找字段解析,如果找到WHERE,则分析其中的条件,完成后再回到SELECT分析字段。最后形成一张我们要的虚表。  
其它的先不说了,只说WHERE。  
wHERE关键字后面的是条件表达式。如果学过C语言等编程语言就会知道,条件表达式计算完成后,会有一个返回值,即非0或0,非0即为真(true),0即为假(false)。同理WHERE后面的条件也有一个返回值,真或假,来确定接下来执不执行SELECT。  


问:

根据上面的解释 select语句执行的过程是 分析器检查第一个关键词是否为select 如果是select跳转到from关键词 并且把from后面跟随的表名对应的表装入内存,装入后跳转到where关键字 先对两表进行笛卡尔积 并生成一个两表对应关系的虚表
但是后面是如何执行的


--------------

我主要是想知道 相对来说更深层的select执行过程

我不清楚后续的执行过程,还请各位讲解一下。

其包括生成虚表后 where的判断条件如何筛选出虚表中匹配的数据 以及select是如何识别并且选择出匹配数据的对应元祖以及字段的
搜索更多相关主题的帖子: SELECT 语句 询问 
2010-07-16 12:04
qingshuiliu
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:17
帖 子:323
专家分:1538
注 册:2009-12-28
收藏
得分:4 
where 语句是做筛选的,不会返回任何值的。
select 命令是从表(可能和其他表联合起来的表)中获取数据
2010-07-16 12:14
luxuluxu
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-7-16
收藏
得分:0 
- - 谢谢楼上的 但是这些我已经明了

我只是想知道一个完整的工作流程
2010-07-16 12:25
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:4 
似乎可能像LZ所说的那样去做,但事实上并非如此.
数据库管理系统处理SELECT语句时,首先要分析该语句,并结合统计信息,决定是否对语句进行优化,如何优化.得到一个执行计划,然后才执行查询过程.(查询就相对简单了)

[ 本帖最后由 cnfarer 于 2010-7-16 20:27 编辑 ]

★★★★★为人民服务★★★★★
2010-07-16 20:26
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:4 
我主要是想知道 相对来说更深层的select执行过程

例如:select * from (select * from bbsUsers) u
实例上加上你的理解然后再去想下运算符的优先级.

C#超级群 74862681,欢迎大家的到来!
2010-07-16 21:36
jmchang
Rank: 2
等 级:论坛游民
帖 子:16
专家分:66
注 册:2010-7-14
收藏
得分:4 
不懂啊。真难。

[url=http://www.]抛光蜡[/url]
2010-07-17 16:40
dearwolf4128
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
威 望:6
帖 子:79
专家分:365
注 册:2010-7-2
收藏
得分:4 
生成笛卡儿积后再根据where条件语句把符合条件的记录保存下来,不符合的删除,最后形成你需要的表
2010-07-19 11:43
快速回复:询问一个关于SELECT执行过程的语句
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017591 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved