개발자로 가는길 :: Oracle DB ( is null , 집합연산)

Oracle DB ( is null , 집합연산)

728x90
반응형

IS NULL

-- IS NULL : 데이터 값이 완전히 비어있는 상태
-- NULL은 연산 불가
 SELECT *
 FROM EMP
 WHERE COMM IS NULL;

SELECT *
FROM EMP
WHERE MGR IS NULL;

SELECT *
FROM EMP
WHERE MGR IS NOT NULL;

--MGR_ID 가 없는 사람들의 LAST_NAME,JOB_ID조회
SELECT LAST_NAME , JOB_ID
FROM employees
WHERE MGR_ID IS NULL;

-- JOB_ID 가 ST_CLERK 인 사원의 부서번호 조회(단 부서번호가 NULL인 사원 제외)
-- 중복을 제거한 후 부서번호만 조회
SELECT DISTINCT DEPARTMENT_ID
FROM employees
WHERE JOB_ID != 'ST_CLERK' AND department_id IS NOT NULL;

--COMMISSION_PCT 가 NULL이 아닌 사원들 중에서 COMMISSION = SALARY * COMMISSION_PCT를
--구하여 EMPLOYEE_ID , FIRST_NAME , JOB_ID 출력
SELECT EMPLOYEE_ID , FIRST_NAME , JOB_ID , (salary * COMMISSION_PCT)AS  COMMISSION
FROM employees
WHERE commission_pct IS NOT NULL ;

 

집합 연산자

--집합연산자
--UNION , UNION ALL(합집합)
--UNION 은 동일한 결과값제거 , UNION ALL은 중복제거 안함
SELECT EMPNO , ENAME , SAL , DEPTNO
FROM EMP 
WHERE DEPTNO= 10
UNION 
SELECT EMPNO , ENAME , SAL , DEPTNO
FROM EMP 
WHERE DEPTNO= 10;


SELECT EMPNO , ENAME , SAL , DEPTNO
FROM EMP 
WHERE DEPTNO= 10
UNION ALL
SELECT EMPNO , ENAME , SAL , DEPTNO
FROM EMP 
WHERE DEPTNO= 10;

--MINUS ( 차집합)
SELECT EMPNO , ENAME , SAL , DEPTNO
FROM EMP 
MINUS 
SELECT EMPNO , ENAME , SAL , DEPTNO
FROM EMP
WHERE DEPTNO=10;

--INTERSECT (교집합)
SELECT EMPNO , ENAME , SAL , DEPTNO
FROM EMP 
INTERSECT
SELECT EMPNO , ENAME , SAL , DEPTNO
FROM EMP 
WHERE DEPTNO= 10;

-- 연산자 우선순위
-- 1) 산술 연산자 + -
-- 2) 산술 연산자 * / 
-- 3) 비교 연산자
-- 4) IS NULL , IS NOT NULL, LIKE , IN
-- 5*BETWEEN A AND B
-- 6) NOT
-- 7) AND
-- 8) OR

728x90
반응형

댓글()