1. JOIN: 테이블 간의 결합
1. 두 테이블에서 동일한 컬럼 찾기 2. 원하는 정보가 도출될 수 있도록 레코드를 식별할 수 있는 컬럼으로 결정 3. PK 또는 FK 기준으로 테이블이 JOIN될 수 있게 테이블이 설계되는 경우가 많음 |
1) 교집합
INNER JOIN
LEFT JOIN: 왼쪽 테이블에 오른쪽 테이블을 붙임
RIGHT JOIN: 오른쪽 테이블에 왼쪽 테이블을 붙임
OUTER JOIN
2) 합집합: 동일한 컬럼 개수와 데이터 타입을 가진 두 테이블을 합쳐줌,
UNION: 중복제거
UNION ALL: 중복제거 안됨
3) 차집합
(oracle) MINUS
(SQL Server) EXCEPT
4) 결합되는 대상 간 일치 정도
EQUI: 동일한 컬럼을 사용하여 두 릴레이션을 결합
non-EQUI: 정확하게 일치하지 않는 컬럼들을 사용하여 두 릴레이션을 결합, '='을 사용하지 않음(ex. A.key <, >, <=, >= B.key)
5) 조건구 없음, 서로 연관된 컬럼이 없을 경우 수행하는 조인
CROSS JOIN: key 없이 JOIN하면 2개의 테이블에 대해 카테시안 곱 발생
6) SELF JOIN: 한 테이블 내에서 연관관계를 가진 두 컬럼 간 조인
테이블 명과 컬렴명이 모두 일치하기 때문에 ALIAS 필수
2. SubQuery
1) 인라인 뷰(lnline View): FROM구에 SELECT문이 있는 경우
2) 스칼라 서브쿼리(): SELECT문에 들어가고, 한 행과 한 컬럼(단일 값)만 반환하는 서브쿼리
3) SubQuery 특징
- 서브쿼리에서는 ORDER BY를 사용할 수 없음
- 여러행을 반환하는 서브쿼리는 다중 행 연산자를 사용
- 메인쿼리에서 서브쿼리의 컬럼을 자유롭게 사용할 수 없음, 서브쿼리 내부에서 메인쿼리 컬럼을 사용할 수 있음
- EXIST가 반환하는 결과 값은 True 혹은 False(결과가 하나라도 존재하면 참)
3. 계층형 조회: 트리형태의 데이터에 대해 조회를 수행하는 것
계층 구조 시작점(START WITH로 계층형 조회의 시작점을 설정) -> 부모데이터, ROOT 노드
LEAF 노드: 자식노드가 없는 노드
⭐️ 계층형 조회 문제: 조회를 통해 어떻게 레코드가 재배치 되는 지 파악하는 것이 중요, 동일한 값을 가진 컬럼끼리 연결되며 재배치 됨
Q. SQL을 수행한 결과 첫 번째 행 값 구하기
SELECT col3
FROM 조직구조
START WITH col2 IS NULL // 계층 구조가 시작되는 지점인 ROOT NODE를 알려줌 -> col2가 null인 행이 시작 지점
CONNECT BY PRIOR col1 = col2 // 어떤 관계성을 기준으로 배치할 것인지 -> col1과 col2의 값이 같은 경우 col1이 뒤로 온다
ORDER SIBLINGS BY col3 DESC; // col3 기준, 오름차순으로 배치 순서 결정
CONNECT BY: 계층구조(트리)가 연결된 방향성을 알려줌 -> 방향을 알면 둘 중 무엇이 먼저 배치되는지 알 수 있음
CONNECT BY PRIOR a= b
1) a컬럼과 b컬럼이 동일한 레코드들 간 계층화 발생
2) b -> a 순으로 재배치 됨(a의 앞 = b이다)
'DB' 카테고리의 다른 글
SQL 마무리 정리 (0) | 2022.11.03 |
---|---|
SQLD 자격증 문제 풀이 정리 7-8 (0) | 2022.11.01 |
SQLD 자격증 문제 풀이 정리 3-4 (2) | 2022.11.01 |
SQLD 자격증 문제 풀이 정리 1-2 (0) | 2022.10.30 |
데이터 모델과 성능 (0) | 2022.10.27 |