[Oracle] 10.NULL 조회와 집합연산자
NULL인 값 찾기
속성 값이 NULL인 것을 검색하기 위해서는 어떻게 해야할까요??
다음과 같이 생각하기 쉽습니다.
--잘못된 예--
SELECT *
FROM employees
WHERE manager_id=NULL;
하지만 위의 예는 잘못된 예입니다!
NULL인 것을 구하고 싶으면 다음과 같이 해야합니다.
SELECT *
FROM employees
WHERE manager_id IS NULL;
NULL이 아닌 것을 조회할 때는 IS NOT을 이용합니다.
SELECT *
FROM employees
WHERE manager_id IS NOT NULL;
정렬을 위한 ORDER BY 절
검색한 데이터를 오름차순 또는 내림차순으로 정렬하여 검색하고 싶으면 ORDER BY절을 이용합니다.
-- 사원번호 순으로 오름차순 --
SELECT EMPLOYEE_ID,FIRST_NAME
FROM EMPLOYEES
ORDER BY EMPLOYEE_ID ASC;
실행결과
-- 사원번호 순으로 내림차순 --
SELECT EMPLOYEE_ID,FIRST_NAME
FROM EMPLOYEES
ORDER BY EMPLOYEE_ID DESC;
-- 상사번호는 오름차순, 사원번호는 내림차순 --
SELECT manager_id "상사번호",first_name "사원이름",employee_id "사원번호"
FROM employees
ORDER BY manager_id ASC, employee_id DESC;
집합연산자: UNION, MINUS, INTERSECT
집합연산자에 대한 예제는 다음 두 테이블을 가지고 하겠습니다.
집합연산자를 사용할 때는 위의 테이블 같이 테이블의 형태와 속성 타입이 같아야합니다.
UNION : 합집합
UNION 연산자는 두 테이블의 행을 중복을 제거해서 합쳐줍니다.
SELECT
*
FROM
group_star
UNION
SELECT
*
FROM
single_star;
출력결과를 보시죠~ 중복되는 행 서태지가 사라졌죠!
만약 중복되는 행을 제거하기 싫으면 UNION ALL을 사용합니다.
SELECT
*
FROM
group_star
UNION ALL
SELECT
*
FROM
single_star;
출력 결과입니다.
INTERSECT: 교집합
INTERSECT 연산자는 두 테이블의 공통된 행을 조회합니다.
SELECT
*
FROM
group_star
INTERSECT
SELECT
*
FROM
single_star;
실행결과
Minus : 차집합
Minus 연산자는 차집합한 결과를 보여줍니다.
SELECT
*
FROM
group_star
MINUS
SELECT
*
FROM
single_star;
실행결과