初学SQL,有几个语句不能理解,请高手帮详细解释下:(1).
SELECT S#,SNAME
FROM S
WHERE S# IN( SELECT S#
             FROM SC
             WHERE C#='C2');
这个语句的内层查询执行了1次吗??(2).
SELECT S#,SNAME
FROM S
WHERE 'C2' IN ( SELECT C#
                FROM SC
                WHERE S#=S.S#);
这个语句的内查询执行了多少次?? 它是怎样工作的??(3).
SELECT S#,SNAME
FROM S
WHERE EXISTS ( SELECT *
               FROM SC
               WHERE SC.S#=S.S# AND C#='C2');
这个语句的内查询执行了多少次?? 它是怎样工作的??

解决方案 »

  1.   

    --具体看书吧!相关子查询的概念
    其执行顺序如下:
    1.首先执行一次外部查询
    2.对于外部查询中的每一行分别执行一次子查询,而且每次执行子查询时都会引用外部查询中当前行的值。
    3.使用子查询的结果来确定外部查询的结果集。
    如果外部查询返回100行,SQL 就将执行101次查询,一次执行外部查询,然后为外部查询返回的每一行执行一次子查询。但实际上,SQL的查询
    优化器有可能会找到一种更好的方法来执行相关子查询,而不需要实际执行101次查询。