oracle学习之集合运算和数据处理

集合运算主要有三种方式:

并集,union 两个集合相同的部份只保留一份,不同部份全部保留

   union  all 两个集合全部保留

交集,intersect 两个集合保留相同的部份

差集,minus A差集B 保留 A中不在B中出现的部份

集合运算的注意事项:

1,参与运算的各个集合必须列数相同,且类型一致!

2,采用第一个集合的表头作为最终使用的表头,(别名也只能在第一个集合上起)

3,可以使用括号(),先执行后面的语句。

使用示例:

select * from emp where deptno=10 union select * from emp where deptno=20;

select *from emp where deptno in(10,30)
minus
select * from emp where deptno in( 20,10);

难题分析,下面是最终执行结果:

分析后,可知道,有三个集合:

各个部门各个工种的工资总额 = 集合1

各个部门的工资总额 = 集合2

工资总额 = 集合3

最后将三个集合取并集:

发现得到上面的错误,这里需要注意集合运算的注意事项

select deptno,job,sum(sal) from emp group by deptno,job  union
select deptno,to_char(null),sum(sal) from emp group by deptno union
select to_number(null),to_char(null),sum(sal) from emp ;

  在这里,为了达到与题意一样的效果,需要设置报表显示样式:

break on deptno skip 2;

  不使用时,记得关闭显示效果:

break on null;

  最终结果如下图:

数据处理,SQL语言分类如下:

1,DML,即date manipulation language 数据操作语言,含:insert,update,delete,select

2,DDL,即date definition language 数据定义语言,含:create,alter,truncat

3,DCL,即date control language 数据控制语言,含:grant赋权,revoke回收权限

insert插入语句:

语法 : insert into tablename[(col1,col2,…)] values(val1,val2,…)|查询结果集;

 比如:

//隐式插入null
insert into dept(deptno,dname) values(60,‘60name‘);
//显示插入null
insert into dept values(70,‘70name‘,null);

  还可以使用地址符号 &

可以继续使用 / 调用上次使用的语句,继续输入值插入数据,非常方便 !

批量插入数据:

//创建表,并复制表结构:
create table emp10 as select * from emp where 1 = 2;
//一次性插入10号部门的员工
insert into emp10 select * from emp where deptno =10;

  update 修改数据,语法:

update tablename set col1=val1,col2=val2… where cond..;

  例子如下:

update dept set loc=‘60loc‘ where deptno = 60;
//注意,同样可以使用&取址符号,对所有DML语句都通用。

  delete 删除数据,与update一样

这里需要注意,delete删除数据是逐条删除,而truncate是先摧毁表,再重建,将数据全部清除

truncate table emp10;

  当数据量较大的时候,建议使用truncate

delete与turncate的区别:

1,delete逐条删除,truncate推毁表重建

2,Delete不会释放空间,truncate会释放

3,delete 可以rollback,truncate不能回滚

 最后补充一点:

语句执行时间记录开关:
set timing on/off
回显开关:
set feedback on/off

  

时间: 2024-10-09 20:35:01

oracle学习之集合运算和数据处理的相关文章

Oracle学习之集合运算

一.集合运算操作符  UNION:(并集)返回两个集合去掉重复值的所有的记录  UNION ALL:(并集)返回两个集合去掉重复值的所有的记录 INTERSECT:(交集)返回两个集合的所有记录,重复的只取一次  MINUS:(差集)返回属于第一个集合,但不属于第二个集合的所有                        记录 集合运算中各个集合必须有相同的列数,且类型一致,集合运算的结        果将采用第一个集合的表头作为最终的表头,order by必须放在每个        集合后

SQL基础学习_06_集合运算和联结

集合运算 1. 并集:UNION ? ? 例: ? ? SELECT shohin_id, shohin_mei? ? FROM Shohin? ? UNION? ? SELECT shohin_id, shohin_mei? ? FROM Shohin2; ? ? 将Shohin和Shohin2两张表的shohin_id和shohin_mei两列取并集: ? ? 注意,UNION操作时,列数必须相等,且每列的数据类型应该相同 ? ? 保留重复行: UNION ALL 2. 交集:INTERSE

oracle学习笔记比较运算

<  >=  <= >=  <>(不等于)  !=(不等于)   :=(赋值) between--and  (在一个区间 包含边界) --查询工资在2000到5000的工资 select salary from employees where salary between2000and5000 in() --查询80,90,70,50,部门编号的人 Select last_name from employees where department_id in(80,90,

Oracle学习(七):集合运算

1.知识点:能够对比以下的录屏进行阅读 SQL> -- 查询10和20号部门的员工的3种方法 SQL> --1. select * from emp where deptno in (10,20); SQL> --2. select * from emp where deptno=10 or deptno=20; SQL> --3. 集合运算:union/union all并集.intersect 交集:minus差集 SQL> -- select * from emp wh

Oracle学习(7):集合运算

集合运算 小例子 SQL> --查询部门号10和20的员工 SQL> --1. select * from emp where deptno=10 or deptno=20; SQL> --2. select * from emp where deptno in (10,20); SQL> --3.集合运算(要将上述两语句执行结果合并起来) SQL> select * from emp where deptno=10 2  union 3   select * from em

5.创建表,使用alter进行表信息的增删改,Oracle回收站,集合运算

 1  Oracle基于用户的管理方案 2 DDL语句可以管理数据库的对象有:视图   索引  序列  同义词   约束 3  创建一个表,有2个条件(1 有权限:2有表空间) Oracle给你提供了默认的resource. 4 创建表,表信息的增删改,Oracle回收站 DDL 管理数据库的对象 表 视图 索引 序列 同义词 约束(..... ) oracle基于用户的管理方案 借助于管理工具可以方便 看到数据库各个对象.... 1 创建一个表 2个条件(1 有权限  2 有表空间) or

oracle 集合运算

集合运算就是将两个或者多个结果集组合成为一个结果集.集合运算包括: INTERSECT(交集),返回两个查询共有的记录. UNION ALL(并集),返回各个查询的所有记录,包括重复记录. UNION(并集),返回各个查询的所有记录,不包括重复记录. MINUS(补集),返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录. 当使用集合操作的时候,要注意:查询所返回的列数以及列的类型必须匹配,列名可以不同. 代码演示:查询出dept表中哪个部门下没有员工.只需求出dept表中的部门

Oracle组函数、多表查询、集合运算、数据库对象(序列、视图、约束、索引、同义词)等

count组函数:(过滤掉空的字段) select count(address),count(*) from b_user max() avg() min(),sum() select sum(age),max(age),min(age),avg(nvl(age,0)) from b_user 1       260     70      10      37.1428571428571 group by:如果前面定义了该字段名  则groupby必须也写上该字段 select name,pw

Sql学习笔记3——集合运算、空值和聚集函数

1.集合运算 SQL作用在关系上的union.intersect和except(Oracle中用minus代替except)运算,对应于数学集合论中的并.交和差运算.这三个运算都自动去除重复. eg: 找出在2009年秋季学期开课但不在2010年春季开课的所有课程 (select course_id from section where semester=‘Fall’ and year=2009) except (select course_id from section where semes