집합 연산자 (SET OPERATOR)
- 집합 연산자
두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터 조회
2개 이상의 질의 결과를 하나의 결과로 만들어준다.
1. UNION
: 합집합, 중복된 행 하나로 표시
SELECT * FROM TB1
UNION
SELECT * FROM TB2;
TB1과 TB2를 UNION 함수를 사용하려고 한다.
강호동과 홍길동은 데이터가 중복되기 때문에 중복이 제거되서 한 행만 표시된다.
※ 컬럼의 개수가 같아야하고, 각 컬럼의 데이터 타입이 같아야한다.
2. UNION ALL
: 합집합, 중복된 행 그대로 표시
SELECT * FROM TB1
UNION ALL
SELECT * FROM TB2;
TB1과 TB2를 UNION ALL 함수를 사용하려고 한다.
중복된 데이터가 그대로 표시된다.
3. INTERSECT
: 교집합, 중복된 행 하나로 표시
SELECT * FROM TB1
INTERSECT
SELECT * FROM TB2;
TB1과 TB2를 INTERSECT 함수를 사용하려고 한다.
중복된 값의 결과가 하나로 표시된다.
4. EXCEPT
: 앞의 SQL 결과에서 뒤의 결과를 뺀 차집합, 중복 행 하나로 표시(Oracle에서는 MINUS 사용)
SELECT * FROM TB1
MINUS
SELECT * FROM TB2;
TB1과 TB2를 MINUS 함수를 사용하려고 한다.
TB1에서 TB2의 결과를 빼서 TB1에 정두준만 표시된다.
계층형 질의와 셀프 조인
- 계층형 질의
테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해 사용
SELECT ...
FROM 테이블
WHERE condition AND condition...
START WITH condition
CONNECT BY [NOCYCLE] condition AND condition...
[ORDER SIBILINGS BY colum, column...]
- CONNECT BY : 트리 형태의 구조로 쿼리 수행 (루트 노드부터 하위 노드의 쿼리를 실행함) 상사 이름과 사람 이름을 조인하여 상사 밑에 넣기
- START WITH : 시작 조건 지정
- CONNECT BY PRIOR : 조인 조건 지정
- NOCYCLE : 순환구조의 발생지점까지만 전개
- PRIOR 자식 = 부모 형태를 사용하면 계층구조에서 부모 데이터에서 자식 데이터(부모->자식) 방향으로 전개하는 순방향 전개 (반대는 역방향 전개)
오라클은 계층형 질의를 사용할 때 다음과 같은 가상 칼럼(Pseudo Column)을 제공한다.
- 셀프조인
한 테이블 내에서 두 컬럼이 연관관계가 있는 경우, 동일한 테이블 사이의 조인으로 FROM 절에 동일 테이블이 2번이상 나타난다.
※ 반드시 테이블 별칭을 사용해야 한다.
SELECT ALIAS명1.칼럼명, ALIAS명2.칼럼명, ...
FROM 테이블1 ALIAS명1, 테이블2 ALIAS명2
WHERE ALIAS명1.칼럼명2 = ALIAS명2.칼럼명1;
'자격증 > SQLD 자격증 정리' 카테고리의 다른 글
[SQLD] SQL활용 - 윈도우 함수(WINDOW FUNCTION) (0) | 2021.07.29 |
---|---|
[SQLD] SQL활용 - 서브쿼리, 그룹 합수 (0) | 2021.07.27 |
[SQLD] SQL활용 - 표준 조인 (0) | 2021.07.19 |
[SQLD] 트리거(TRIGGER) 예제 (0) | 2021.07.16 |
[SQLD 오답정리] SQL 기본 및 활용 - SQL 기본(2) (0) | 2021.07.15 |