Oracle 多表查询和分组统计查询

Oracle 多表查询和分组统计查询

数据表的多表查询

内连接(等值连接)

所有满足条件的数据都会被显示出来

只有相等的条件满足之后,才会显示;如果为空或不等,则不显示

insert into emp(empno,ename,job) values(8888,'张三','cleck');

select e.empno,e,ename,e.job,d.deptno,d.loc from emp e,dept d where e.deptno=d.deptno

这里只显示14行,新增加的张三不会显示,因为8888与dept表中的数据不等

###外连接
控制坐表和外表的数据是否全部显示

  • 左外连接:字段 = 字段(+)
select e.empno,e.ename,e.job,d.deptno,d.loc from emp e,dept d where e.deptno=d.deptno(+;
  • 右外连接:字段(+)= 字段
select e.empno,e.ename,e.job,d.deptno,d.loc from emp e,dept d where e.deptno(+)=d.deptno;
  • 全外连接:几乎不用

数据的集合操作

  • UNION:重复数据不显示
  • UNIONALL:重复数据显示
  • INTERSECT:返回相同部分
  • MINUS:由前一个查询,减去第二个查询,返回差集

##分组统计查询

###常见统计函数

  • COUNT():统计个数
    • COUNT(*):明确返回表中的数据个数,是最准确的
    • COUNT(字段):不统计为null的数据个数
  • COUNT(DISTINCT 字段):统计消除重复数据之后的数据个数
  • MAX():返回最大值,日期或数字
  • MIN():返回最小资,日期或数字
  • SUM():返回和,数字字段
  • AVG():返回平均子,数字字段

分组统计查询

GROUP BY 分组字段,分组字段…
有重复数据才可以分组

三个限制:

  • 没有使用group by 语句的时候,select后面,只能出现统计函数,不能出现字段
  • 在使用了group by 之后,select 后面出现的字段,只能是group by 用来分组的字段
  • 统计函数嵌套之后,select后面不能出现任何字段

发布了19 篇原创文章 · 获赞 2 · 访问量 2085

猜你喜欢

转载自blog.csdn.net/weixin_43308622/article/details/104473839