집합 연산자와 조인의 차이점
- 집합 연산자를 사용한 결과는 두 개 이상의 SELECT문의 결과 값을 세로로 연결한 것. 즉 행이 늘어나는 것
- 조인을 사용한 결과는 두 개 이상의 테이블 데이터를 가로로 연결한 것. 즉 열이 늘어나는 것
FROM절에는 여러 개 테이블을 지정하는 것이 가능하다.
꼭 테이블이 아니더라도 테이블 형태이면 모두 FROM절에 지정할 수 있다. (뷰, 서브쿼리 등)
FROM절에 명시한 각 테이블을 구성하는 행이 모든 경우의 수(데카르트 곱)로 출력된다.
그렇기 때문에 이 모든 경우의 수들 중에서 적절한 출력 행을 선정하는 조건식을 담은 WHERE 절이 필요하다.
다른 테이블의 동일한 열 이름 구분하기
여러 테이블에 동일한 열이 들어 있는 경우, 구분을 위해 아래와 같이 표현한다.
SELECT 테이블 이름.열 이름
테이블의 별칭 설정
다음과 같이 테이블의 별칭을 설정할 수 있다.
FROM 테이블1 별칭1, 테이블2 별칭2
이 경우 SELECT문에서 열을 선택해올 때 다음과 같이 별칭을 이용할 수 있다.
SELECT 별칭1.열 이름
WHERE절을 이용한 조인
등가 조인
등가 조인 = 내부 조인 = 단순 조인.
여러 테이블의 열 이름이 같을 때는, 어느 테이블에 속해 있는 열인지 명시해야 한다.
비등가 조인
SELECT * FROM EMP E, SALGRADE S WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;
자체 조인
현재 행의 A열 값을 B열 값으로 사용하고 있는 데이터를 연결해주는 방식
FROM절에 같은 테이블을 여러 번 명시하되 테이블의 별칭만 다르게 지정하는 방식
값이 NULL이면 조인 후 제외된다.
외부 조인
값이 NULL일 때 조인 대상에서 제외되는 단점을 커버할 수 있는 방법이다.
왼쪽 외부 조인 | WHERE A = B(+) |
오른쪽 외부 조인 | WHERE A(+) = B |
SQL-99 표준 문법 조인
FROM 절에 조인 키워드를 사용하는 형태이다.
등가 조인 1. NATURAL JOIN
이름과 자료형이 같은 열을 찾은 후 그 열을 기준으로 등가 조인을 해 주는 방식.
기존 등가 조인과는 다르게 조인 기준 열인 DEPTNO를 SELECT절에 명시할 때 테이블 이름을 붙이면 안 되는 특성이 있다.
등가 조인 2. JOIN ~ USING
NATURAL JOIN과는 다르게 조인 기준으로 사용할 열을 명시하여 사용
등가 조인 3. JOIN ~ ON
가장 범용성 있는 방식.
기존 WHERE절에 있었던 조인 조건식을 ON 키워드 옆에 작성
조인 기준 조건식은 ON에 명시하고, 그 밖의 출력 행을 걸러내기 위해 WHERE 조건식을 따로 사용하는 방식.
FROM TABLE1 JOIN TABLE2 ON (조인 조건식)
외부 조인 OUTER JOIN
왼쪽 외부 조인 | WHERE TABLE1.COL1 = TABLE2.COL1(+) |
FROM TABLE1 LEFT OUTER JOIN TABLE2 ON (조인 조건식) | |
오른쪽 외부 조인 | WHERE TABLE1.COL1(+) = TABLE2.COL1 |
FROM TABLE1 RIGHT OUTER JOIN TABLE2 ON (조인 조건식) | |
전체 외부 조인 | UNION 집합 연산자를 활용해야 함 |
FROM TABLE1 FULL OUTER JOIN TABLE2 ON (조인 조건식) |
세 개 이상의 테이블을 조인할 때
FROM 절에 조인 관련 내용을 작성해야 하는 SQL-99방식에서는 테이블의 개수가 두 개를 넘어 갈 때 WHERE절의 AND를 쓸 수 없기 때문에 다음과 같은 방식으로 조인해야 한다.
FROM TABLE1 JOIN TABLE2 ON (조건식) JOIN TABLE3 ON (조건식)
'BackEnd > DB, SQL' 카테고리의 다른 글
SQL 14편: 데이터 조작어 DML(INSERT, DELETE, UPDATE) (0) | 2021.12.30 |
---|---|
SQL 13편: 서브쿼리 (0) | 2021.12.30 |
SQL 11편: GROUP BY절 사용하기(+ HAVING절) (0) | 2021.12.27 |
SQL 10편: 다중행 함수(SUM, COUNT, MAX, MIN, AVG) (0) | 2021.12.27 |
SQL 9편: DECODE 함수와 CASE문 (0) | 2021.12.27 |
댓글