SQL에서 테이블 간의 연결을 정의하는 방법 중 하나로, ANSI(SQL 표준을 개발한 기구)에서 제시한 표준화된 형식
-- 사원이 46명, 부서가 16개
-- 부서에 소속된 사원이 41명
-- 사원이 존재하는 부서 14명
-- INNER JOIN의 결과 : 사원정보조회 41건
-- LEFT JOIN : INNER 41건 + 부서가 없는 사원 5 = 46건
-- RIGHT JOIN : INNER 41건 + 사원이 없는 부서 2 = 43건
-- FULL JOIN : INNER 41 + 5 + 2 =48건
SQL문의 WHERE 절에서 조인 조건을 명시하는 방식
// LEFT OUTER JOIN
SELECT
column1, column2, ...
FROM
table1, table2
WHERE
table1.column = table2.column(+);
// RIGHT OUTER JOIN
SELECT
column1, column2, ...
FROM
table1, table2
WHERE
table1.column(+) = table2.column;
SELECT
A.emp_no, A.emp_nm, dept_cd, B.dept_nm
-- *
FROM tb_emp A
NATURAL JOIN tb_dept B -- 공통부분인 dept_cd에는 테이블명 표기 X
;
// employees와 departments의 공동 컬럼으로 조인
SELECT
employees.id, employees.name, departments.department_name
FROM
employees
NATURAL JOIN
departments;
SELECT
employees.id, employees.name, departments.department_name
FROM
employees
JOIN
departments
USING (department_id);
SELECT
products.product_name, colors.color_name
FROM
products
CROSS JOIN
colors;
SELECT
e1.name AS employee_name, e2.name AS manager_name
FROM
employees AS e1
INNER JOIN
employees AS e2
ON
e1.manager_id = e2.id;
SELECT [DISTINCT] { 열이름 .... }
FROM 테이블 또는 뷰 이름
JOIN 테이블 또는 뷰 이름
ON 조인 조건
WHERE 조회 조건
GROUP BY 열을 그룹화
HAVING 그룹화 조건
ORDER BY 정렬할 열 [ASC | DESC];