JAVA를 잡아라!...
SQL - 5. 조인 (Join) 본문
- 2개 이상의 테이블에서 쿼리를 작성하는 방법
- 2개 이상의 테이블 데이터를 조합한 결과 검색 가능
- 데이터 중복을 최소화 : 저장 공간 확보, 데이터 수정 용이
- 엔티티(entity) : 저장되고 관리되어야 할 데이터로, DB의 테이블은 1가지 이상의 엔티티를 포함
#1 내부 조인 (INNER JOIN)
조인키에 해당하는 각 테이블의 열값을 비교해 조건에 맞는 값 검색
SELECT [열 이름]
FROM [테이블1]
INNER JOIN [테이블2]
ON [테이블1.열] = [테이블2.열]
WHERE [검색조건]
- SELECT 문 : 각 테이블에 검색할 열
- FROM 문 : 조인할 테이블 이름
- ON 문 : 테이블을 조인할 때 조인조건(조인키)으로 사용할 열
- WHERE 문 : 조인을 완료한 상태에서 조건에 맞는 값을 가져오고자 사용
- * AS 별칭 : 테이블 이름이 길거나, 테이블에 같은 이름의 열이 있을 때 사용 (어떤 테이블의 열을 검색할지 판단)
- 데이터 검색 '성능'을 높이기 위해 인덱스가 형성된 열 or 데이터 양이 적은 열을 조인조건으로 우선 사용
#2 외부 조인 (OUTER JOIN)
열의 일치 항목을 고려하지 않고, 한쪽 테이블을 다른 쪽 테이블에 조합할 때 사용
SELECT [열 이름]
FROM [테이블1]
<LEFT, RIGHT, FULL> OUTER JOIN [테이블2]
ON [테이블1.열] = [테이블2.열]
WHERE [검색조건]
1) LEFT(RIGHT) OUTER JOIN
- 왼쪽(오른쪽) 테이블 기준으로 모든 행을 표시하고, 오른쪽(왼쪽) 테이블에 존재하지 않는 데이터는 NULL로 표시
- 기준 테이블에 있는 데이터만 추출하려면 LEFT(RIGHT) OUTER JOIN 결과에서 NULL 데이터만 추출하면 됨
2) FULL OUTER JOIN
- LEFT + RIGHT OUTER JOIN
- 양쪽 테이블의 일치하지 않는 행도 모두 검색
- 실제 사용 X... 누락이나 오류 찾기 등 데이터 확인용으로 사용
#3 교차 조인 (CROSS JOIN)
각 테이블의 모든 경우의 수를 조합한 데이터가 필요한 경우 사용 (카르테시안 곱, cartesian product)
SELECT [열 이름]
FROM [테이블1]
CROSS JOIN [테이블2]
WHERE [검색조건]
- FROM 문에 조인조건 없음
- 한 테이블에 저장된 모든 행이 다른 테이블의 행을 조인
- 자주 사용 X... 샘플 데이터 만들기, 각 행에 같은 숫자의 데이터 만들기 등 활용
#4 셀프 조인 (SELF JOIN)
같은 테이블을 사용하는 특수한 조인 (반드시 별칭 사용)
SELECT [열 이름] -- ex) a.열1, b.열2
FROM [테이블1 AS a]
INNER JOIN [테이블1 AS b]
ON [조인조건] -- ex) a.열1 = b.열1
WHERE [검색조건]
'DBMS_SQL > Oracle' 카테고리의 다른 글
SQL - 7. 문자열 함수 (0) | 2023.12.27 |
---|---|
SQL - 6. 서브 쿼리 (Subquery) (0) | 2023.12.25 |
SQL - 4. 자료형 (0) | 2023.12.23 |
SQL - 3. 테이블 생성 & 데이터 조작 (DDL & DLC) (0) | 2023.12.22 |
SQL - 2. SELECT 문 : 데이터 검색_WHERE, ORDER BY, LIKE, GROUP BY (1) | 2023.12.22 |