--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;