-- 기본 구문
SELECT * FROM table1, table2;
-- 또는
SELECT * FROM table1 CROSS JOIN table2;
Equi Join은 동등(=) 연산자를 사용하여 두 테이블의 열이 동일한 값을 가질 때 데이터를 결합하는 조인 방식입니다.
-- WHERE 절 사용
SELECT e.empno, e.ename, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno;
-- JOIN 키워드 사용
SELECT e.empno, e.ename, d.dname
FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno;
-- USING 절 사용
// USING 절을 사용하면 두 테이블에 동일한 열 이름이 존재할 때 그 열 이름만 명시하여 조인을 수행할 수 있습니다.
SELECT e.empno, e.ename, d.dname
FROM emp e
JOIN dept d USING (deptno);
Non-Equi Join은 동등(=) 연산자가 아닌 다른 연산자(예: <, >, <=, >=, BETWEEN 등)를 사용하여 두 테이블의 열 간 조건을 설정하고 데이터를 결합하는 조인 방식입니다. Non-Equi Join은 일반적인 동등 조건이 아닌 범위 조건을 기반으로 데이터를 조인할 때 사용됩니다.
-- 급여 등급 조회 예제
SELECT e.empno, e.ename, e.sal, s.grade
FROM emp e
JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal;
-- 직원, 부서, 급여등급 조인
SELECT
e.empno,
e.ename,
d.dname AS 부서명,
s.grade AS 급여등급,
e.sal AS 기준급여,
CASE
WHEN s.grade = 1 THEN e.sal * 1.4
WHEN s.grade = 2 THEN e.sal * 1.3
WHEN s.grade = 3 THEN e.sal * 1.2
ELSE e.sal
END AS 인상급여
FROM emp e
JOIN dept d ON e.deptno = d.deptno
JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal;
-- 2011년 입사자의 급여등급 조회
SELECT e.empno, e.ename, e.sal, s.grade
FROM emp e
JOIN salgrade s ON e.sal BETWEEN s.losal AND s.hisal
WHERE YEAR(e.hiredate) = 2011;
-- AS 키워드 사용
FROM emp AS e
JOIN dept AS d
-- AS 생략 가능
FROM emp e
JOIN dept d
조인 순서
인덱스 활용
조인 조건 주의사항