메뉴 건너뛰기

bysql.net

제2절_집합_연산자(SET_OPERATOR)

2012.03.19 07:27

ljw 조회 수:5800

제2절 집합 연산자(SET OPERATOR)



집한 연산자

  1. 두개 이상의 연관된 테이블에서 데이터를 조회하는 방법
  2. 여러개의 질의의 결과를 연결하여 하나로 결합
  3. 튜닝관점에서 실행계획을 분리하고자 할때

SQL_204.jpg
SQL_205.jpg

--UNION 
SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES
WHERE DEPARTMENT_ID=10
UNION
SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES
WHERE DEPARTMENT_ID=20
ORDER BY LAST_NAME;

이미지 17.png

--같은 컬럼에 대한 IN연산자 대체 UNION 효과
SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (10, 20);
이미지 19.png


UNION ALL
UNION ALL은 UNION과 다르게 집합내에서 중복이 생길수 있음(단순 결합)
--UNION ALL
SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (10, 20)
UNION ALL
SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (10, 20)
ORDER BY LAST_NAME;
이미지 20.png


--MINUS
SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (10, 20)
MINUS
SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES
WHERE DEPARTMENT_ID =10
ORDER BY LAST_NAME;
이미지 21.png

--NOT IN를 이용한 MINUS효과
SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES A
WHERE DEPARTMENT_ID IN (10, 20)
 AND EMPLOYEE_ID NOT IN 
              (SELECT EMPLOYEE_ID
                 FROM EMPLOYEES
                WHERE DEPARTMENT_ID = 10);
이미지 22.png


--NOT IN를 이용한 MINUS효과
SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES A
WHERE DEPARTMENT_ID IN (10, 20)
INTERSECT
 SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES A
WHERE DEPARTMENT_ID = 10;
이미지 24.png


--IN연산자를 이용한 INTERSECT효과
SELECT DEPARTMENT_ID, EMPLOYEE_ID, FIRST_NAME, LAST_NAME
  FROM EMPLOYEES A
WHERE DEPARTMENT_ID IN (10, 20)
  AND EMPLOYEE_ID IN 
               (SELECT EMPLOYEE_ID
                FROM EMPLOYEES 
              WHERE DEPARTMENT_ID = 10);
이미지 25.png


번호 제목 글쓴이 날짜 조회 수
58 Week1_박우창 [1] balto 2012.07.17 9893
57 Week1_이주영 suspace 2012.07.17 5026
56 Week1_승대수 보라빛고양이 2012.07.17 3053
55 Week1_이진우 [5] ljw 2012.07.16 46280
54 Week1_위충환 [1] 실천하자 2012.07.16 9273
53 문제작성 실천하자 2012.07.16 5794
52 제5절_배치_프로그램_튜닝 보라빛고양이 2012.07.04 6906
51 제4절_파티션_활용 오예스 2012.06.26 5753
50 제3절_DML_튜닝 balto 2012.06.13 9074
49 제1절_고급_SQL_활용 실천하자 2012.06.11 6287
48 제1절 고급 SQL 활용 실천하자 2012.06.11 8397
47 제4절_고급_조인_기법 suspace 2012.06.05 31240
46 제2절_소트_튜닝 file ljw 2012.06.04 12024
45 제3절 조인 기본 원리 보라빛고양이 2012.05.30 6980
44 제1절_인덱스_기본_원리 오예스 2012.05.22 7100
43 제2절_인덱스_튜닝 balto 2012.05.18 9904
42 제2절_쿼리변환 ljw 2012.05.14 5614
41 제1절_옵티마이저 실천하자 2012.05.12 7185
40 제3절_동시성_제어 운영자 2012.05.08 6037
39 제1절_Lock balto 2012.05.05 25259