oracle数据查询(二).pdf
文本预览下载声明
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 指出连接的类
型,常用
显示全部