Oracle操作4

--union all合并结果集(列数一致)后不会去除重复的数据
select * from emp e where e.job='SALESMAN'
union all
select * from emp e where e.job = any('CLERK','SALESMAN');
--UNION去除重复的数据
--注:列不但要保证个数一致,还要保证类型一致
--去重是以所有列为基准匹配是否重复(共三列,两列重复,一列不重复,也不能合并这条数据)
--办法,先用union all去看,然后两行数据完完全全一致的才能去重
select e.sal,e.job from emp e where e.job='SALESMAN'
union
select e.empno,e.job from emp e where e.job = any('CLERK','SALESMAN');
--intersect找出两个结果集中的交集
select * from emp e where e.job='SALESMAN'
intersect
select * from emp e where e.job = any('CLERK','SALESMAN');
--minus第一个结果集减去第二个结果集剩余的(差集)
select * from emp e where e.job='SALESMAN'
minus
select * from emp e where e.job = any('CLERK');
--sql分类:DQL(数据查询语言),DDL(数据定义语言),DML(数据操作语言),TCL(事务控制语言)
--DML(数据操作语言)
--C(create)、R(retrieve)、U(update)、D(delete)

create table zx_emp as select * from emp;
--C(create):新增一条数据
--往zx_emp表中添加以下几位员工 
insert into zx_emp (empno,ename,job,hiredate,sal,comm,deptno) values (8080,'王五','pm',to_date('1995-02-02','yyyy-MM-dd'),6000,2000,50);
insert into zx_emp (empno,ename,job,mgr,hiredate,sal,deptno) values (8009,'赵六','javacoder',8080,to_date('1999-09-09','yyyy-MM-dd'),3500,50);
insert into zx_emp (empno,ename,job,mgr,hiredate,sal,comm) values (8110,'钱七','测试员',8080,to_date('2020-03-09','yyyy-MM-dd'),2000,0);

--U(update):修改数据
--把编号为8110的员工职位改成“testing”。 
update zx_emp set job='testing' where empno=8110;
--为部门编号为50的员工加薪8%
update zx_emp set sal=(1.08*sal) where deptno=50;
--把编号为8110的员工的月薪改成公司的平均月薪,并修改奖金成500
update zx_emp set sal=(select floor(avg(sal)) from zx_emp),comm=500 where empno=8110;

--D(delete):删除数据
--删除编号为8110的员工
delete from zx_emp where empno=8110;
--删除部门编号为40,50的所有员工
delete from zx_emp where deptno=40 or deptno=50;
原文地址:https://www.cnblogs.com/qilin20/p/12448339.html