首先我们要了解一下SQL语句的执行过程。
SELECT 字段
FROM 表名
WHERE 条件表达式
那它们是按什么顺序执行呢?分析器会先看语句的第一个词,当它发现第一个词是SELECT关键字的时候,它会跳到FROM关键字,然后通过FROM关键字找到表名并把表装入内存。接着是找WHERE关键字,如果找不到则返回到SELECT找字段解析,如果找到WHERE,则分析其中的条件,完成后再回到SELECT分析字段。最后形成一张我们要的虚表。
其它的先不说了,只说WHERE。
WHERE关键字后面的是条件表达式。如果学过C语言等编程语言就会知道,条件表达式计算完成后,会有一个返回值,即非0或0,非0即为真(true),0即为假(false)。同理WHERE后面的条件也有一个返回值,真或假,来确定接下来执不执行SELECT。
例:
SELECT *
FROM STUDENT
WHERE SNO = '1';
分析器先找到关键字SELECT,然后跳到FROM关键字将STUDENT表导入内存,并通过指针p1找到第一条记录,接着找到WHERE关键字计算它的条件表达式,如果为真那么把这条记录装到一个虚表当中,p1再指向下一条记录。如果为假那么p1直接指向下一条记录,而不进行其它操作。一直检索完整个表,关把虚表返回给用户。
再说EXISTS谓词,EXISTS谓词也是条件表达式的一部分。当然它也有一个返回值(true或false)。
例:
SELECT Sname
FROM Student
WHERE EXISTS
(SELECT *
FROM SC
WHERE SC.Sno = Student.Sno AND SC.Cno = '1');
这是一个SQL语句的嵌套使用,但和上面说的SQL语句的执行过程也是相同的。嵌套的意思也就是说当分析主SQL语句(外面的那个SELECT,我们权且先这么叫它)到WHERE关键字的时候,又进入了另一个SQL语句中。那么也就是说,分析器先找到表Student并装入内存,一个指针(例如p1)指向Student表中的第一条记录。
SQL嵌套语句执行顺序
最新推荐文章于 2025-02-15 20:11:04 发布
本文详细解释了SQL语句的执行过程,从SELECT开始,经过FROM加载表,再到WHERE处理条件表达式。重点讨论了WHERE子句中的条件判断以及EXISTS谓词在嵌套SQL语句中的作用。通过示例展示了如何分析和执行嵌套SQL,强调了在嵌套语句中,外部SQL只遍历一次,而内部SQL根据外部条件反复执行。

最低0.47元/天 解锁文章
492

被折叠的 条评论
为什么被折叠?



