목차
조인이란?
두개 이상의 테이블이나 베이터베이스를 연결하여 데이터를 검색하는 방법이다.
검색하고 싶은 컬럼이 다른 테이블에 있을 경우 주로 사용하며, 여러 개의 테이블을 마치 하나의 테이블인 것처럼 활용하는 방법.
보통 PK 혹은 FK로 두 테이블을 연결한다.
테이블을 연결하려면 적어도 하나의 칼럼은 서로 공유되고 있어야 한다.
INNER JOIN
기준 테이블과 조인한 테이블의 중복된 값을 보여준다.
다시말해, 결과값은 A테이블을 기준으로 A테이블과 B테이블이 모두 갖고 있는 데이터만 검색된다.
-- 문법
SELECT (테이블별칭.칼럼, 테이블별칭.칼럼)
FROM 기준테이블 별칭
INNER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키 ...
-- 예제
SELECT (A.NAME, B.AGE)
FROM EX_TABLE A
INNER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP AND A.DEPT = B.DEPT
LEFT OUTER JOIN
기준 테이블의 값 + 기준 테이블과 조인 테이블의 중복된 값을 보여준다.
왼쪽 테이블을 기준으로 조인을 진행하는것이다.
다시말해, 결과는 A 테이블의 모든 데이터와 A테이블과 B 테이블의 중복되는 값이 검색된다.
-- 문법
SELECT (테이블별칭.칼럼, 테이블별칭.칼럼)
FROM 기준테이블 별칭
LEFT OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키 ...
-- 예제
SELECT (A.NAME, B.AGE)
FROM EX_TABLE A
LEFT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP AND A.DEPT = B.DEPT
RIGHT OUTER JOIN
LEFT OUTER JOIN의 반대.
오른쪽 테이블을 기준으로 조인을 하는것.
다시말해, B 테이블의 모든 데이터와 A테이블과 B테이블의 중복되는 값이 검색된다.
-- 문법
SELECT (테이블별칭.칼럼, 테이블별칭. 칼럼)
FROM 기준테이블 별칭
RIGHT OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키 ...
-- 예제
SELECT (A.NAME, B.AGE)
FROM EX_TABLE A
RIGHT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP AND A.DEPT = B.DEPT
FULL OUTER JOIN
A테이블과 B테이블이 갖고있는 모든 데이터가 검색된다.
사실상 기준 테이블의 의미가 없다.
--문법--
SELECT (테이블별칭.칼럼, 테이블별칭.칼럼)
FROM 기준테이블 별칭
FULL OUTER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키...
--예제--
SELECT (A.NAME, B.AGE)
FROM EX_TABLE A
FULL OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP AND A.DEPT = B.DEPT
CROSS JOIN
크로스 조인은 모든 경우의 수를 전부 표현해주는 방식이다.
기준 테이블이 A일 경우, A의 데이터 한 ROW를 B 테이블 전체와 JOIN하는 방식이다.
따라서 결과값도 N * M 이 될 것이다.
위 예시에선 A테이블에 데이터가 3개, B테이블에 데이터가 4개 있으므로 총 12개가 검색된다.
--문법(첫번째방식)--
SELECT (테이블별칭.칼럼, 테이블별칭.칼럼)
FROM 기준테이블 별칭
CROSS JOIN 조인테이블 별칭
--예제(첫번째방식)--
SELECT (A.NAME, B.AGE)
FROM EX_TABLE A
CROSS JOIN JOIN_TABLE B
======================================================================
--문법(두번째방식)--
SELECT (테이블별칭.칼럼, 테이블별칭.칼럼)
FROM 기준테이블 별칭,조인테이블 별칭
--예제(두번째방식)--
SELECT (A.NAME, B.AGE)
FROM EX_TABLE A,JOIN_TABLE B
SELF JOIN
셀프조인은 자기자신과 자기 자신을 조인한다.
다시말해 하나의 테이블을 여러번 복사해서 조인하는것이다.
컬럼을 다양하게 변형시켜 활용할 경우, 자주 사용한다.
--문법--
SELECT (테이블별칭.칼럼, 테이블별칭.칼럼)
FROM 테이블 별칭,테이블 별칭2
--예제--
SELECT (A.NAME, B.AGE)
FROM EX_TABLE A,EX_TABLE B
'DB' 카테고리의 다른 글
[MSSQL] SQL Server 튜닝 - 인덱스 (0) | 2022.12.20 |
---|---|
[DB/SQL] Server SQL Modes - "Group By" 를 사용할 때, 알아야 할 내용 (0) | 2022.11.17 |
[MSSQL] VARCHAR(MAX|N) 길이별 성능차이 및 NVARCHAR와의 성능차이에 관해.. (0) | 2022.02.08 |
[PostgreSQL] 기본 데이터 타입 정리 (0) | 2020.09.01 |
[PostgreSQL] 기본 데이터 타입 정리 - User defined data (0) | 2020.09.01 |
댓글