java MySQL数据库编程 第四章 高级查询(二)

第四章 高级查询(二)

(1)通过在子查询中使用EXISTS子句,可以对子查询中的行是否存在进行检查。子查询可以出现在表达式出现的如何位置

(2)子查询语句可以嵌套在SQL语句中任何表达式出现的位置。

一、EXISTS子查询

1.使用EXISTS语句判断该数据库对象是否存在:

DROP TABLE IF EXISTS temp;

2. EXISTS作为WHERE语句的子查询:

SELECT .....FROM 表名 WHERE EXISTS(子查询);

3. EXISTS关键字后面的参数是一个任意的子查询,如果该子查询有返回行。则EXISTS子查询的结果为true,此时再执行外层查询语句。如果子查询有没返回行。则EXISTS子查询的结果为false,此时不再执行外层查询语句。

二、NOT EXISTS子查询

EXISTS和IN一样,同样允许添加NOT关键字实现取返操作,NOT EXISTS表示不存在。

三、子查询注意事项

1)子查询可以嵌套在SQL语句中任何表达式出现的位置

         在SELECTE语句中,子查询可以被嵌套在SELECT语句的列、表和查询条件中,即SELECT子句、FROM子句、WHERE子句、GROUP BY子句和HAVING子句。

2)只出现在子查询中而没有出现在父查询中的的表不能包含在输出列中

         多层嵌套子查询的最终数据集只包含父查询的SELECT子句中出现的字段,而子查询的输出结果通常会作为其外层子查询数据源或用于数据判断匹配

原文地址:https://www.cnblogs.com/ppdpp/p/7601034.html