1、子查询 Where子句单行子查询HAVING子句单行子查询 FROM子句单行子查询IN比较符的多行子查询ALL比较符的多行子查询 ANY比较符的多行子查询 Where子句单行子查询 在简单查询中 我们查询了表中相关列的所有记录 但是生产数据库中往往需要查询满足一定条件的记录 如查询岗位JOB为MANAGER的员工信息等 此时需要使用条件查询 条件查询使用关键字WHERE实现条件查询的语句格式为 SELECT列名 列名 FROM表名WHERE条件语句 Where子句单行子查询 在简单查询中 我们查询了表中相关列的所有记录 但是生产数据库中往往需要查询满足一定条件的记录 如查询岗位JOB为MANA
2、GER的员工信息等 此时需要使用条件查询 条件查询使用关键字WHERE实现条件查询的语句格式为 SELECT列名 列名 FROM表名WHERE条件语句 HAVING子句单行子查询 HAVING子句用来限制分组函数 我们先给出一个使用HAVING字句限制分组函数的例子 然后再给出在HAVING字句中使用单行子查询的例子例子10 17使用HAVING子句限制分组函数 SQL selectjob min sal avg sal max sal 2fromemp3groupbyjob4havingavg sal 2000 上述查询中 HAVING字句限制了分组函数AVG sal 的输出条件 只有满足A
3、VG sal 2000时 才输出结果 目的是查询表emp中 平均工资大于2000 且按照工作岗位JOB分类后的每类岗位的最低工资 平均工资和最高工资 FROM子句单行子查询 FROM字句后跟的是表名 在一定条件下也可以使用单行子查询 例如查询表EMP中工资大于平均工资的所有员工的信息 例子10 20查询表EMP中工资大于平均工资的所有员工的信息 SQL selecte ename e sal e job d av sal2fromempe selectjob avg sal av sal3fromemp4groupbyjob d5wheree job d job6 ande sal d av
4、sal IN比较符的多行子查询 在多行子查询中必须使用多行比较运算符 IN比较符返回子查询的中的每一个值 一旦有与该值相等的数据行则输出这些满足条件的数据行 例子10 21查询那些是所在岗位中工资最低的员工信息 SQL selectename job sal hiredate2fromemp3wheresalin selectmin sal 4fromemp5groupbyjob ALL比较符的多行子查询 为了说明ANY比较符在多行子查询中的作用 我们先看一个例子 如例子20 24所示 查询表EMP中工资大于获得等于所有岗位的最大平均工资的员工信息 即先查询每个岗位的平均工资 而查询条件是表这些平均工资的最大值大或相等的员工信息 SQL selectename job sal2fromemp3wheresal all 4selectavg sal 5fromemp6 groupbyjob 解释 ALL的为大于或者等于最大的含义 而 为小于或等于最小的含义 ANY比较符的多行子查询 ANY是任何一个的意思 所以ANY表示大于最小的 SQL selectename job sal2fromemp3wheresal any 4selectavg sal 5fromemp6groupbyjob