SQL

SQL JOIN

kiki97 ㅣ 2022. 8. 9. 17:59

반응형

JOIN이란?

두개 이상의 테이블을 결합하여 나타낼 때 사용한다.

두 테이블의 조인을 위해서는 기본키(PK)와 외래키(FK) 관계로 맺어져야 하고, 이를 일대다 관계라고한다.


INNER JOIN (내부조인)

조인 조건에 맞는 행만 포함하는 조인. 대부분 이 조인이다.

두 테이블에 모두 지정한 열의 데이터가 있어야 한다.

--oracle
SELECT 조회할 컬럼
FROM 테이블1, 테이블2
[WHERE 조건문]


--ansi
SELECT 조회할 컬럼
FROM 테이블1
(INNER) JOIN 테이블2
ON 테이블1.컬럼 = 테이블2.컬럼
[WHERE 추가조건]

OUTER JOIN(외부 조인)

조인 조건에 만족하지 못한 행도 출력하는 조인

두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.

 

LEFT JOIN

왼쪽 테이블의 모든 값이 출력되는 조인

SELECT 조회할 컬럼
FROM 기준테이블1 
LEFT OUTER JOIN 테이블2
ON 조건문
[WHERE 추가조건문]

 

RIGHT JOIN

오른쪽 테이블의 모든 값이 출력되는 조인

SELECT 조회할 컬럼
FROM 테이블1 
RIGHT OUTER JOIN 기준테이블2
ON 조건문
[WHERE 추가조건문]

 

Full OUTER JOIN

왼쪽 또는 오른쪽 테이블의 모든 값이 출력되는 조인

SELECT 조회할 컬럼
FROM 테이블1 
FULL OUTER JOIN 테이블2
ON 조건문
[WHERE 추가조건문]

 

Oracle OUTER JOIN

SELECT c.cus_name "고객명", 
       c.tel_num "고객전화번호", 
       e.emp_name "담당직원명", 
       e.jikup "담당직원직급" 
FROM customer c, 
     employee e 
WHERE c.emp_no = e.emp_no(+); 
--(+)가 붙은 컬럼의 반대편 컬럼의 소속 테이블 행은 모두 나옴
--여러 테이블을 할 시 엮이지 않은 테이블에 (+) 붙여주면됨

CROSS JOIN(상호 조인)

2개 이상 테이블에서 각각의 행이 모두 연결되는 조인

곱집합 두 테이블 데이터의 모든 조합

1)
SELECT 조회할컬럼
FROM 테이블1, 테이블2

2)
SELECT 조회할컬럼
FROM 테이블1
JOIN 테이블2

3)
SELECT 조회할컬럼
FROM 테이블1
CROSS JOIN 테이블2

SELF JOIN(자체 조인)

자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다.

 SELECT 컬럼명
 FROM 테이블1 별칭A
          INNER JOIN 테이블2 별칭B
          ON <조인될 조건>
 [WHERE 검색 조건]
반응형