본문 바로가기

카테고리 없음

[데이터베이스] STANDARD JOIN, 서브쿼리, 뷰

728x90
  • 01 STANDARD JOIN
  • 02 서브쿼리
  • 03 뷰(View)

 

01 STANDARD JOIN

1. INNER JOIN

- JOIN 조건에 충족하는 데이터만 출력되는 방식

- JOIN 조건을 ON 절을 사용하여 작성해야 한다.

 

2. OUTER JOIN

- JOIN 조건에 충족하는 데이터가 아니어도 출력될 수 있는 방식

 

1) LEFT OUTER JOIN

- SQL에서 왼쪽에 표기된 테이블의 데이터는 무조건 출력되는 JOIN

 

2) RIGHT OUTER JOIN

- SQL에서 오른쪽에 표기된 테이블의 데이터는 무조건 출력되는 방식

 

3) FULL OUTER JOIN

- 왼쪽, 오른쪽 테이블의 데이터가 모두 출력되는 방식

- LEFT OUTER JOIN과 RIGHT OUTER JOIN의 합집합. 단, 중복값은 제거

 

3. NATURAL JOIN

- A 테이블과 B 테이블에서 같은 이름을 가진 컬럼들이 모두 동일한 데이터를 가지고 있을 경우 JOIN 이 되는 방식

- SQL Server(MSSQL)에서는 지원하지 않는다.

 

4. CROSS JOIN

- A 테이 블과 B 테이블 사이에 JOIN 조건이 없는 경우, 조합할 수 있는 모든 경우를 출력하는 방식

= Cartesian Product


CHAPTER 2. SQL 활용

 

02 서브쿼리(Subquery)

서브쿼리란?

- 하나의 쿼리 안에 존재하는 또 다른 쿼리

- 바깥에 있는 엄마쿼리 = 메인쿼리

- 안에 있는 아기쿼리 = 서브쿼리

 

위치에 따른 서브쿼리 구분

 

1. 스칼라 서브쿼리(Scalar Subquery)

- 주로 SELECT 절에 위치

- 컬럼이 올 수 있는 대부분 위치에 사용 가능

- 컬럼 대신 사용되 므로 반드시 하나의 값만을 반환해야 하며 그렇지 않은 경우 에러를 발생

 

2. 인라인 뷰(Inline View)

- FROM 절 등 테이블명이 올 수 있는 위치에 사용 가능

 

3. 중첩 서브쿼리(Nested Subquery)

- WHERE 절과 HAVING 절에 사용

 

메인쿼리와의 관계에 따라 구분

1) 비연관 서브쿼리 

2) 연관 서브쿼리

 

1) 비연관 서브쿼리 (Un-Correlated Subquery)

- 서브쿼리 내에 메인쿼리의 컬럼이 존재하지 않 는다.

 

2) 연관 서브쿼리 (Correlated Subquery)

- 서브쿼리 내에 메인쿼리의 컬럼이 존재한다

 

반환하는 데이터 형태에 따라 구분

1) 단일 행 서브쿼리

2) 다중 행 서브쿼리

3) 다중 컬럼 서브쿼리

 

1) 단일 행 서브쿼리 (Single Row Subquery)

- 서브쿼리가 1 건 이하의 데이터를 반환

- 단일 행 비교 연산자와 함께 사용 

e.g. =, <, >, <=, >=, <>

 

2) 다중 행 서브쿼리 (Multi Row Subquery)

- 서브쿼리가 여러 건의 데이터를 반환

- 다중 행 비교 연산자와 함께 사용

e.g. IN. ALL, ANY, SOME, EXISTS

 

3) 다중 컬럼 서브쿼리 (Multi Column Subquery)

- 서브쿼리의 결과로 여러 개의 컬럼이 반환

- 메인쿼리의 조건과 동시에 비교

 

03 뷰(View)

 

뷰(view)란?

- 특정 SELECT 문에 이름을 붙여서 재사용이 가능하도록 저장해놓은 오브젝트

 

※주의 : 뷰는 가상 테이블이다. 따라서 실제 데이터를 저장하지는 않고 해당 데이터를 조회해오는 SELECT 문만 가지고 있다.

728x90