조인이란?
- 테이블 간 관계를 맺는것
(선행조건이 필요하다. 두테이블간의 관계를 맺는데 사용할 컬럼, 즉 두 테이블간 연결고리 역할을 할 컬럼이 있어야함)
내부 조인
WHERE 절에서 동등연산자(=)를 사용해 연결고리 컬럼, 즉 조인 컬럼을 비교하는 조인이다.
(아래와 같은 테이블이 정의 되어 있다는 가정)
1
2
3
4
5
|
SELECT a.emp_id, a.emp_name, a.gender, a.age, a.dept_id,
b.dept_id, b.dept_name, b.use_yn
FROM emp_master a, dept_master b
WHERE a.dept_id = b.dept_id
ORDER BY a.emp_id;
|
cs |
사원정보 테이블은 a, 부서정보 테이블은 b란 별칭을 두어 쿼리 구문에서 a. 그리고 b.형태로 사용함.
WHERE 절에선, 두테이블에 있는 공통 컬럼, 즉 조인 컬럼인 dept_id를 이용해 두테이블간에 같은건만 조회 한다.
ANSI 구문으로 작성한 내부 조인(표준 오라클은 동등연산자(=)로 처리해도되긴함.)
1
2
3
4
5
|
SELECT a.emp_id, a.emp_name, a.gender, a.age, a.dept_id,
b.dept_id, b.dept_name, b.use_yn
FROM emp_master a INNER JOIN dept_master b
ON a.dept_id = b.dept_id
ORDER BY a.emp_id;
|
cs |
결과값은 똑같으나 , FROM 절과 WHERE 절 부분이 좀 다르다 .
FROM 절에 조인을 비교할사이에 INNER JOIN을 명시하고 , WHERE 절대신 ON으로 표기함.
(물론 추가 조건이 있다면 WHERE절 사용 해야함)
조인은 여러 테이블간 조인도 가능하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
-기본구문
SELECT a.emp_id, a.emp_name, a.gender, a.age, a.dept_id,
b.dept_id, b.dept_name, b.use_yn,
c.address_id , c.city, c.gu, c.address_name
FROM emp_master a, dept_master b, address_master c
WHERE a.dept_id = b.dept_id AND a.address_id = c.address_id
AND A.gender = '남성'
ORDER BY a.emp_id;
--ANSI 구문
SELECT a.emp_id, a.emp_name, a.gender, a.age, a.dept_id,
b.dept_id, b.dept_name, b.use_yn,
c.address_id , c.city, c.gu, c.address_name
FROM emp_master a
INNER JOIN dept_master b ON a.dept_id = b.dept_id
INNER JOIN address_master c ON a.address_id = c.address_id
WHERE a.gender = '남성'
ORDER BY a.emp_id;
|
cs |
외부조인
- 두테이블중 한 테이블의 조인 컬럼값이 없더라도 없는건까지 모두 포함해 조회 하는 조인 (null인값도 포함)
키워드는 내부 조인 쿼리 부분에서 WHERE 절 조건에 (+)를 함께 선언해주면됨
'데이터베이스' 카테고리의 다른 글
[Oracle] 오라클 SELECT문 별칭(Alias) (0) | 2021.03.09 |
---|---|
[Oracle] 서브쿼리 종류 (0) | 2021.02.25 |
[Oracle] 집합쿼리 ( UNION ALL, UNION, INTERSECT, MINUS) (0) | 2021.02.11 |
[Oracle] 데이터 집계( GROUP BY절, HAVING절, 집계함수) (0) | 2021.02.11 |
[Oracle] SQL 연산자와 주요 SQL함수 (0) | 2021.02.10 |