文档详情

oracle数据查询(二).pdf

发布:2018-02-24约7.63千字共9页下载文档
文本预览下载声明
HAVING 子句: HAVING 子句通常与GROUP BY 子句一起使用,在完成对分组结果统计后,可 以使用 HAVING 子句对分组的结果做进一步的筛选。如果没有GROUP BY 子句, HAVING 子句的功能与WHERE 子句一样,HAVING 和WHERE 的相似之处是都定义搜索条 件。 只是HAVING 和组有关,WHERE 子句与单个的行有关。 1、select 子句中使用了GROUP BY 子句:HAVING 用于GROUP BY 子句创建的 组。 2、如果有WHERE 子句而没有GROUP BY 子句,HAVING 子句将用于WHERE 子句 输出,并且整个输出被看作一个组。 3、如果既没有WHERE 子句也没有GROUP BY 子句,那么HAVING 子句将用于 FROM 子句的输出,并且将其看作是一个组。 提示:记住select 子句的处理顺序:在select 子句中先由FROM 找到数据 表,WHERE 子句接收FROM 子句的输出,而HAVING 子句则接收来自GROUP BY、WHERE 或FROM 子句的输入。 例如: 列出平均薪资大于10000 的统计信息: .select job_id,avg(ralary),sum(ralary),max(ralary),count(*) from employees group by job_id having avg(salary)10000; 多表连接查询 1、简单连接: 简单连接使用逗号将两个或多个表进行连接,这是最简单的也是最常用 的多表 查询形式。 (1)基本形式: 简单连接仅是select 子句和where 子句来连接多个表。其结果是 一个通过 笛卡尔积所产生的表,就是由基表中的每一行与另一个基表中的每 一行连在 一起所生成的表,查询结果的行数是两个基表行数的积。 (2)、条件限定: 在实际需求中,由于笛卡尔积中包含了大量的冗余信息,这在一般 情况下 毫无意义。为了避免这种情况的出现,通常在select 语句中提供 了一个连接 条件过滤其中无意义的数据,从而满足需求。在使用where 子句限 定时,只有 第一个表中的列与第二个表中相应列相互匹配后才能在结果集中 显示。这是连 接查询最常用的形式。 如: .select employee_id,last_name,department_name,from employ ees, departments where employees.department_id=departments.dep artment_id; (3)、表别名: 表别名是在FROM 子句中用于各个表的“简短名称”,它们可以唯 一的标识数据 源。 如: .select em.employee_id,em.last_name,dep.department_name form employees em,department dep where em.department_name = Dep.department_id and dep.department_name=Shipping; 注意:如果为表指定了别名,那么语句中所有的子句都必须使用别 名,而不允 许在使用实际的表名。 这里介绍一下select 语句中各子句执行的顺序:FROM 子句被最先 执行。然后 是where 子句,最后才是select 子句。当在FROM 子句中指定表别 名之后,表 的真实名称将被替换。同时其他的子句只能使用表的别名来限定 列。 2、JOIN 连接: 除了使用逗号连接外,oracle 还支持使用关键字JOIN 连接。使用JOIN 连接的语 法格式如下: FROM join_table1 join_type join_table2 [ON(join_condition)] 其中,JOIN_TABLE 指出参与连接操作的表名;JOIN_TYPE 指出连接的类 型,常用
显示全部
相似文档