본문 바로가기
PROGRAMING📚/SQL DB📑

SQL-기초(2) 집합연산자

Ta이니 2024. 6. 7.
728x90
반응형


emp 테이블에서 부서 번호 10,20 인 사원번호, 이름, 급여 , 부서번호

 

합집합

select empno, ename, deptno from emp where deptno = 10
UNION
select empno, ename, deptno from emp where deptno = 20;

 

select empno, ename, sal, deptno from emp
union
select empno, ename, sal, deptno from emp where deptno =20;

차집합

select empno, ename, sal, deptno from emp
MINUS
select empno, ename, sal, deptno from emp where deptno =20;

교집합

select empno, ename, sal, deptno from emp
INTERSECT
select empno, ename, sal, deptno from emp where deptno =20;

부서 번호가 10이거나 20인 사원의 정보 출력

 

SELECT *
from emp
where deptno =10 or deptno =20;

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

 

사원 이름이 s로 끝나는 사원의 모든 데이터 출력

select *
from emp
where ename LIKE '%S';

 

30번 부서에서 근무하는 사원 중 직업이 job SALESMAN 인 
사원의 번호, 이름, 직책, 급여, 부서번호 출력

select empno, ename, job, sal, deptno
from emp
where deptno = 30 and job = 'SALESMAN';

 

 

30번 부서에서 근무하는 사원 중 직업이 job SALESMAN 인
사원의 번호, 이름, 직책, 급여, 부서번호 급여가 많은 순으로 출력

select empno, ename, job, sal, deptno
from emp
where deptno = 30 and job = 'SALESMAN'
order by sal desc;

 

 

20번 , 30번 부서에 근무하는 사원 중 
급여가 2000초과한 사원의 사원번호, 이름,급여, 부서번호 출력

 

집합연산자 사용

-- USE UNION
select  empno, ename, sal, deptno
from emp
where deptno =20 and sal > 2000
union
select  empno, ename, sal, deptno
from emp
where deptno =30 and sal > 2000;

--DONT USE 
select  empno, ename, sal, deptno
from emp
where deptno in (20,30) and sal > 2000;

 


급여가 2000 이상 3000 이하 범위인 사원의 정보 출력

select *
from emp
where sal >= 2000 and sal <=3000;

-- USE Between A and B

select *
from emp
where sal BETWEEN 2000 and 3000;

급여가 2000 이상 3000 이하 범위 이외의 사원의 정보 출력

-- 01
select *
from emp
where sal < 2000 or sal >3000;

-- 02
select *
from emp
where sal NOT BETWEEN 2000 and 3000;


컬럼 이름 작성하는 방법

 

사원이름, 사원번호, 급여, 부서번호 출력

select ename as "사원이름", empno 사원번호, sal as 급여, deptno "부서 번호"
from emp;

select ename 사원이름, empno 사원번호, sal 급여, deptno 부서_번호
from emp;

사원이름에 E 가 포함되어 있는 30번 부서의 사원 중
급여가 1000~2000 사이가 아닌 사원이름, 사원 번호, 급여, 부서 번호 (한글 컬럼이름으로 출력)

--01
select ename 사원이름 , empno "사원 번호", sal 급여, deptno "부서 번호"
from emp
where ename like '%E%' 
      and deptno =30 
      and sal not BETWEEN 1000 and 2000;
--02      
select ename 사원이름 , empno "사원 번호", sal 급여, deptno "부서 번호"
from emp
where ename like '%E%' 
      and deptno =30 
      and (sal <1000 or sal > 2000);

 

주가수당(comm) 이 존재하지 않는 사람의 정보 출력  

select *
from emp
where comm is null;

주가수당(comm) 이 존재하는 사람의 정보 출력  

select *
from emp
where comm is not null;

주가수당(comm) 이 존재하고 주가수당(comm)이 0이 아닌 사람의 정보 출력  

select *
from emp
where comm is not null and comm <> 0;

 

주가수당이 존재하지 않고 상급자(mgr)가 있고 직급이   MANAGER, CLERK 인 
사원 중에서 사원이름의 두번째 글자가 L이 아닌 사원정보 출력

select *
from emp
where comm is null
  and mgr is not null
  and job in ('MANAGER','CLERK')
  and ename not like '_L%';

728x90
반응형

댓글