두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것
일반적으로 사용되는 SQL 문장의 상당수가 JOIN이고, RDBS의 가장 큰 장점이자 핵심 기능이다.
주의할 점은 FROM절에 여러 테이블이 나열되더라도 SQL에서 데이터를 처리할 때는 단 두 개의 집합 간에만 조인이 일어나는 것이다.
EQUI(등가) JOIN
두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법
SELECT 테이블1.칼럼명, 테이블2.칼럼명 FROM 테이블1, 테이블 2 INNER JOIN 테이블1.칼럼명1 ON 테이블2.칼럼명2
Between, >, >=, <, <= 등의 연산자들을 사용하여 조회하는 것
두 테이블 간 동일한 이름을 갖는 모든 컬럼들에 대해 EQUI JOIN을 수행하기 때문에 추가로 USING, ON, WHERE JOIN 조건을 정의할 수 없다.
FROM USING 조건절을 이용하면 같은 이름을 가진 칼럼들 중에서 원하는 칼럼에 대해서만 선택적으로 EQUI JOIN을 할 수 있다.
(SQL Server는 지원하지 않는다.)
# 예제
SELECT * FROM STU JOIN STU_TEMP USING (STU_ID);
PRODUCT의 개념이다.
JOIN 조건에서 동이랗ㄴ 값이 없는 행도 반환할 때 사용할 수 있다.
테이블 A와 B를 비교해서 B의 JOIN 칼럼에서 같은 값이 있을 때 그 해당 데이터를 가져오고 B의 JOIN 칼럼에서 같은 값이 없는 경우 NULL 로 채우는 형태를 LEFT OUTER JOIN 테이블이 역전되면 RIGHT OUTER JOIN이라 한다.
FULL OUTER JOIN : 합집합, 단 UNION ALL이 아닌 UNION과 같은 기능이므로 중복되는 데이터는 삭제한다.
in ORACLE
계층형 질의를 사용할 때 다음과 같은 가상 칼럼을 제공한다.
# ORACLE
SELECT CONNECT_BY_ROOT 사원, 루트 사원, SYS_CONNECT_BY_PATH(사원,'/') 경로, 사원, 관리자 FROM 사원 START WITH 관리자 is NULL CONNECT BY PRIOR 사원 = 관리자
동일 테이블 사이의 조인, FROM 절에 동일 테이블이 두번 이상 등장함
SELECT AS1.칼럼명, AS2.칼럼명 WHERE FROM 테이블1 AS1, 테이블2 AS2 where ...
서브쿼리가 사용 가능한 곳
실제 데이터는 가지고 있지 않지만 테이블이 수행하는 역할을 수행하기 때문에 가상 테이블이라고도 함.
CREATE VIEW V_PLAYER_TEAM AS SELCET P.PLAYER_NAME, P.POSITION ... FROM PLAYER P