- JOIN - 여러 개의 릴레이션을 사용해서 새로운 릴레이션을 만드는 과정
조인 참조
https://sql-joins.leopard.in.ua/
- 등가조인(교집합) - 두 개의 테이블 간에 일치하는 것을 조인 '=' 사용
WHERE절사용 - 일치시킬 칼럼을 ' = '을 가지고 연결
해시 함수를 사용해서 연결
INNER JOIN - FROM절에서 연결 ex) FROM TABLE1 INNER JOIN TABLE2 ON 1.COLUMN=2.COLUMN
조인문에 추가 조건 및 정렬 할 수 있음
INTERSECT - 두 개 테이블에서 공통된 값을 조회하는 방법
- 비등가조인 - 정확하게 일치하지 않는 것을 조인 '='을 제외한 나머지를 사용
- OUTER JOIN - 교집합 + 한쪽 테이블에만 있는 데이터, INNER JOIN 과 사용법 동일
LEFT OUTER JOIN - 교집합 + 왼쪽 테이블에만 있는 데이터
RIGHT OUTER JOIN - 교집합 + 오른쪽 테이블에만 있는 데이터
FULL OUTER JOIN - 모든 데이터
- CROSS JOIN - 조인 조건구가 없음, 단순히 카테시안 곱이 발생
- UNION - 연산의 결과로 나온 두개의 테이블을 하나로 합침, 중복 발생시 제거, 정렬발생, UNION ALL에서는 중복제거 정렬 발생하지 않음
- MINUS - 연산의 결과에서 일치하는 데이터를 제거하고 보여줌 (EXCEPT연산과 동일)
SELECT COLUMN1 FROM TABLE1
MINUS
SELECT COLUMN1 FROM TABLE2
TABLE2에서 나온 값을 제거하고 보여줌
- 계층형 조회
오라클에서 지원, 트리 형태의 구조를 위에서 아래로, 아래에서 위로 탐색하면서 조회
SELECT FROM WHERE에서 WHERE절을 계층형 조건으로 변경해서 사용
계층형 조건 작성 방법 - START WITH 시작조건 CONNECT BY PRIOR 조인 조건
조건을 먼저 실행 후 SELECT 실행
* 시작조건에는 TREE구조에서 ROOT에 넣고 싶은 것을 적고, 조인조건에는 ROOT아래로 연결 될 것들을 작성
키워드 | 설명 |
LEVEL | 계층 레벨 의미 가장 상위레벨은 1 |
CONNECT_BY_ROOT | 가장 최상위 값 표시 |
CONNECT_BY_ISLEAF | 가장 최하위 값 표시 |
SYS_CONNECT_BY_PATH | 전체 전개 경로 표시 |
NOCYCLE | 순환 구조가 발생지점까지 전개 |
CONNECT_BY_ISCYCLE | 순환 구조 발생지점 표시 |
계층형 구조 키워드 - SELECT 절에서 표시 가능
- 서브쿼리 - WHERE절에서 SELECT문을 한번더 사용 하는 것
* FROM 절에서 SELECT문 사용 - 인라인뷰, 가상의 테이블을 만드는 효과
* SELECT절에서 SELECT문 사용 - 스칼라 서브쿼리, 한행과 한칼럼만 반환
단일행 서브쿼리 - 서브쿼리의 실행 결과가 하나의 행만 반환하는 것, 비교연산자 사용
다중행 서브쿼리 - 서브쿼리의 실행 결과가 여러개의 행을 반환하는 것, IN ANY ALL EXISTS사용
다중행 연산 | 설명 |
IN | 결과중 하나만 동일해도 됨 |
ALL | 결과가 모두 동일해야 됨 |
ANY | 결과중 하나만 동일해도 됨 |
EXISTS | 결과가 하나라도 존재해야 됨 |
'자격증 > SQLD' 카테고리의 다른 글
SQLD(6)-SQL 최적화의 원리 (0) | 2021.08.18 |
---|---|
SQLD(5)-SQL활용2 (0) | 2021.08.13 |
SQLD(3)-SQL기본3 (0) | 2021.08.12 |
SQLD(2)-SQL기본2 (0) | 2021.08.12 |
SQLD(3)-SQL기본1 (0) | 2021.08.11 |