INNER JOIN
SELECT *
FROM 테이블A
INNER JOIN 테이블B
ON A.KEY = B.KEY
LEFT JOIN
SELECT *
FROM 테이블A
LEFT JOIN 테이블B
ON A.KEY = B.KEY
...테이블 연결가능!!
LEFT JOIN 테이블C
ON B.KEY = C.KEY
LEFT JOIN 테이블D
ON C.KEY = D.KEY
테이블 A
속성1 | 속성2 | 속성3 | 속성4 |
1 | A | 11 | 3 |
2 | B | 22 | 4 |
3 | C | 33 | 1 |
4 | D | 44 | NULL |
테이블 B
속성5 | 속성6 | 속성7 | 속성8 |
1 | ㄱ | 44 | 100 |
2 | ㄴ | 55 | 200 |
3 | ㄷ | 66 | 300 |
LEFT OUTER JOIN 결과
SELECT *
FROM 테이블A
LEFT JOIN 테이블B
ON A.속성4 = B.속성5
1. 테이블 B 속성을 그대로 붙여준다. ->
2. 키값별로 칼럼 적용
테이블 A의 정보는 다 가져오고
테이블 A의 키값에 있는 정보를 가진 테이블 B의 데이터만 가져와서 테이블이 완성된다.
크로스 조인 - CROSS JOIN
상호조인이나 교차조인이라고 하며 조인한 테이블의 모든 조합을 나타낸다.
SELECT 테이블명.컬럼명, ...
FROM 테이블명1 CROSS JOIN 테이블명2
ON 테이블명1.컬럼명1 = 테이블명2.컬럼명2
안시 조인 - ANSI JOIN
국제적 표준 조인방식
ANSI 내부조인
SELECT e.employee_id , d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id
ANSI조인 1
SELECT e.employee_id , d.department_name
FROM employees e INNER JOIN departments d
ON e.department_id = d.department_id
기존은 where 절에서만 조인
ansi조인은 from 절에서 innerjoin
on 이라는 새로운명령어를 쓴다.
ANSI조인 2
SELECT e.employee_id , d.department_name, department_id
FROM employees e INNER JOIN departments d
USING (department_id);
조인하는 두 테이블의 칼럼명이 같을경우 using 을 사용하여 쉽게 쓸 수 있다.
단, using 쓸려면 select절에도 해당 칼럼이름앞에 alias를 붙이면 오류가 난다.
ANSI 외부조인
FROM TABLE A [ LEFT/ RIGHT / FULL ] OUTER JOIN TABLE B
아웃터조인이다. 기존은 데이터가 없는쪽에 (+)를 붙혔다면 ANSI조인은
아웃터테이블(데이터 가지고 있는 테이블)의 위치를 같이 적어준다( 왼쪽,오른쪽)