<조인 (JOIN) - 동등조인>
-
조인 (JOIN): 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법
-
둘 이상 행들의 공통된 값 기본키 및 외래키 값을 사용하여 조인 (관계없는 두 테이블을 조인할 수는 없음)
-
두 개의 테이블을 SELECT 문장 안에서 조인하려면 적어도 하나의 컬럼이 그 두 테이블 사이에서 공유 되어야함
-
조인 방법: Equi Join(동등 조인), Non-Equi Join(비동등 조인), Self Join(자체 조인), Outer-Join(외부 조인)
-
명시적 표현 (JOIN과 ON이용)
1
2
3
4
|
SELECT table 1.column 1[,table 2.column 2...]
FROM table 1 JOIN table 2
ON table 1.column1=table 2.cloumn2;
[USING (column)]
|
cs |
-
묵시적 표현 (콤마 , 를 이용)
1
2
3
|
SELECT table 1.column 1[,table 2.column 2...]
FROM table 1, table 2
WHERE table 1.column 1 = table 2.column 2;
|
cs |
-
HR 연습계정의 employees, departments 테이블을 조인하기
1
2
3
4
|
SELECT e.employee_id, e.department_id, d.department_name
FROM employees e
JOIN departments d
ON e.department_id = d.department_id;
|
cs |
-
내츄럴 조인 (NATURAL JOIN): 동일한 열이 있으면 알아서 JOIN하기 때문에 ON절 생략가능
-
만약에 동일한 열이 2개 이상 있을때는 JOIN할 수 없음
-
내츄럴 조인을 사용하여 employees 테이블과 jobs 테이블을 조인하고 employee_id, first_name, job_id, job_title 출력
1
2
3
4
|
SELECT employee_id, first_name,
job_id, job_title
FROM employees
NATURAL JOIN jobs;
|
cs |
-
기본 동등조인의 명시적표현 방법을 사용하여 사용하여 employees 테이블과 jobs 테이블을 조인하고 employee_id, first_name, job_id, job_title 출력 (결과는 동일)
1
2
3
4
|
SELECT e.employee_id, j.job_id, j.job_title
FROM employees e
JOIN jobs j
ON e.job_id = j.job_id;
|
cs |
-
employees 테이블과 departments 테이블을 조인하여 department_id가 50인 테이블의 employee_id, department_id, department_name을 출력
1
2
3
4
5
|
SELECT e.employee_id, e.department_id, d.department_name
FROM employees e
JOIN departments d
ON e.department_id = d.department_id
WHERE d.department_id = 50;
|
cs |
-
employees, departments, locations 3개의 테이블을 조인하여 employee_id, department_name, city 출력
1
2
3
4
|
SELECT e.employee_id, d.department_name, lo.city
FROM employees e
JOIN departments d ON e.department_id = d.department_id
JOIN locations lo ON d.location_id = lo.location_id;
|
cs |
<동등 조인 예제>
-
부서명(department_name), 시티명(city), 국가명(country_name)을 나타내는 테이블 출력. 테이블들은 countries와 departments와 locations을 조인. 단, 시티가 'Seattle' 혹은 'London' 이어야하고 국가명은 앞쪽에 'United'가 들어가야함
1
2
3
4
5
6
7
|
SELECT d.department_name 부서명, lo.city 도시명,
co.country_name 국가명
FROM departments d
JOIN locations lo ON d.location_id = lo.location_id
JOIN countries co ON co.country_id = lo.country_id
WHERE lo.city IN ('Seattle', 'London')
AND co.country_name LIKE 'United%';
|
cs |
'Learning > SQL' 카테고리의 다른 글
조인 (JOIN) - 자체 조인 (Self Join) (0) | 2020.06.17 |
---|---|
조인 (JOIN) - 비 동등조인 (0) | 2020.06.17 |
집계 함수 (그룹 함수) (0) | 2020.06.16 |
DECODE 함수, CASE 함수 (0) | 2020.06.16 |
NULL 관련 함수 (0) | 2020.06.16 |