服务器 频道

PL/SQL学习笔记之十二

  【IT168 服务器学院】使用集合操作

  UNION

  select employee_id,job_id from employees
  union
  select employee_id,job_id from job_history;

  两个表的并集,但不显示重复行。
  执行的时候要先排序再剔重,所以结果集是有序的。

  union all

  也是两个表的并集,而且显示重复行。
  语法同上。

  intersect

  select employee_id,job_id from employees
  intersect
  select employee_id,job_id from job_history;

  minus

  select employee_id,job_id from employees
  minus
  select employee_id,job_id from job_history;

  e-j=e-e与j的交集;
  j-e=j-j与e的交集;

  注:
  在select 列表中的表达式必须有同样的数目和类型。

   匹配 SELECT 语句
  select employee_id,job_id,salary from employees
  union
  select employee_id,job_id,0      from job_history; 

  括号可以用拉修改序列的执行顺序。

  ORDER BY 子句:
  只能在整个集合的最后出现;
  可以按照第一个 SELECT 语句中的列名,别名或者位置号排序。  

  GROUP BY 子句的增强

  CUBE 操作符的 GROUP BY

  在 GROUP BY 子句中使用 ROLLUP 或者 CUBE 来产生分组小计;

  ROLLUP 分组产生包括规则的分组结果和小计的结果的组合;
  GROUP BY [ROLLUP](col_name_list)
  ROLLUP:
  a       ab abc

    abc
  ab ab
  a a a
  all all all

  CUBE 分组产生包括 ROLLUP 产生的结果和交叉分组小计。
  cube:

  a ab abc

  a ab abc
  all a ab
  b ac
  all bc
  a
  b
  c
  all

0
相关文章