JOIN 연산자를 사용해 원하는 칼럼을 기준으로 행을 합칠 수 있다.FROM 절에 2개 이상의 테이블을 나열하면 레코드 해석이 불가능한 단순 결합이 된다 (예를 들어 테이블 A 아래에 테이블 B의 데이터가 붙는 것 = 세로/열 방향) !!!!Book 테이블과 Orders 테이블, Customer 테이블로 구성된 마당 서점의 데이터를 활용했다.



일반조인 = 내부조인 = 동등조인
일반조인은 조인 조건문에 따라 2개의 테이블의 컬럼을 합쳐 새로운 테이블을 생성한다.
WHERE절에 지정 = 암묵적 표현법SELECT * -- 속성들 FROM customer, orders -- 테이블1, 테이블 2 WHERE customer.custid = orders.custid; -- 조인조건 AND 검색조건 순으로 작성![]()
FROM절에 테이블 나열 시 JOIN을 넣어주고, ON으로 결합 조건이 되는 칼럼 지정 = 명시적 표현법SELECT * FROM customer JOIN orders -- JOIN 이라고만 하면 INNER JOIN으로 인식한다 ON customer.custid = orders.custid;![]()
SELECT customer.name, SUM(orders.saleprice) FROM customer JOIN orders ON customer.custid = orders.custid GROUP BY 1 ORDER BY 1;![]()
-- 고객 이름 : customers 테이블의 name 칼럼 -- 도서 이름 : book 테이블의 bookname 칼럼 -- 연결 : order 테이블의 custid, bookid SELECT customer.name, book.bookname FROM customer JOIN orders ON customer.custid = orders.custid JOIN book ON orders.bookid = book.bookid;-- JOIN과 동일한 값 추출 SELECT customer.name, book.bookname FROM customer, orders, book WHERE customer.custid = orders.custid AND orders.bookid = book.bookid;![]()
-- INNER JOIN 활용 SELECT customer.name, book.bookname FROM customer JOIN orders ON customer.custid = orders.custid JOIN book ON orders.bookid = book.bookid WHERE book.price = 20000;-- 암묵적 표현법 활용 SELECT customer.name, book.bookname FROM customer, orders, book WHERE customer.custid = orders.custid AND orders.bookid = book.bookid AND book.price = 20000;![]()
내부조인의 경우 공통 칼럼명을 기반으로 결과 집합을 생성한다면, 외부조인은 조건문에 만족하지 않는 행도 표시한다. 한쪽 테이블에 데이터가 없어도 기준이 되는 테이블에 데이터가 있다면 조인 결과에 포함시킨다.
FROM절에 조인 종류를 적고 ON을 이용해 조인 조건을 명시OUTER는 생략가능하다SELECT 속성들 FROM 테이블 1 {LEFT | RIGHT | FULL[OUTER]}JOIN 테이블 2 ON 조인조건 WHERE 검색조건
LEFT JOIN을 사용한다LEFT JOIN은 먼저 명시된 테이블1을 기준으로 조인조건에 의해서 LEFT JOIN 뒤에 명시된 테이블2를 합체시켜 준다SELECT customer.name, orders.saleprice -- 속성들 FROM customer LEFT JOIN orders -- 테이블 ON customer.custid = orders.custid; -- 조인조건![]()
SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.n = table2.n;
- table1의 모든 데이터 + table2에서 table1.n과 겹치는 table2.n 행
(이미지 출처: advenoh님 블로그)
셀프조인은 테이블에 별칭을 붙이는 기능을 활용해 자기 자신과 결합하는 조인이다.
특별한 명령어가 정해져있지는 않고 INNER JOIN이나 FROM-WHERE의 암묵적 표현법을 사용할 수 있다.
임직원 중에 같은 부서에서 일하는 직원을 알고 싶을 때 셀프조인을 사용할 수 있다.
-- 암묵적 표현법 SELECT A.first_name AS EmployeeName1, B.first_name AS EmployeeName2, A.dept_no FROM employees AS A, employees AS B WHERE A.emp_no <> B.emp_no AND A.dept_no = B.dept_no;
(쿼리문 및 이미지 출처: advenoh님 블로그)
UNION 구문으로 표현해 사용할 수 있다.