서브쿼리 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
'''서브쿼리'''(sub query)는 하나의 [[SQL]] 문에 포함되어 있는 또 다른 SQL 문이다.<ref name='sub_query_main'>꽁담,〈[https://mozi.tistory.com/233 서브쿼리란? 서브쿼리 사용해보기]〉, 2018-11-13</ref>
+
'''ETL'''(Extract, Transform, Load, ETL)은  컴퓨팅에서 데이터베이스 이용의 한 과정으로, 추출, 변환, 적재의 약어이다.
  
== 분류 ==
 
=== 단일 행 서브쿼리 ===
 
* 서브쿼리가 단일 행 비교 연산자(=, <, <=, >, >=, <>)와 함께 사용될 때는 서브쿼리의 결과 건수가 반드시 1건 이하여야 한다.
 
:만약 결과가 2건 이상인 경우 오류가 발생한다.
 
==== 예시 ====
 
만약 T2 테이블의 C2 = 3 인 조건을 만족하는 C1 의 값이 2건 이상인 경우 오류가 발생한다.<br>
 
  SELECT C1, C2, C3
 
  FROM T1
 
  WHERE C1 = (SELECT C1
 
              FROM T2
 
              WHERE C2 &#61; '3')
 
  ORDER BY C1, C2, C3;
 
 
그룹 함수를 사용하는 경우 결과값이 1건이기 때문에 단일 행 서브쿼리로써 사용 가능하다.<ref name='sub_query_main'></ref>
 
 
  SELECT C1, C2, C3
 
  FROM T1
 
  WHERE C1 <= (SELECT AVG(C1)
 
              FROM T2
 
              WHERE C2 &#61; '3')
 
  ORDER BY C1, C2, C3;
 
 
=== 다중 행 서브쿼리 ===
 
* 서브쿼리의 결과가 2건 이상 반환될 수 있다면 반드시 다중 행 비교 연산자(IN, ALL, ANY, SOME)와 함께 사용해야 한다.<ref name='sub_query_main'></ref>
 
:{|class=wikitable width=700 style="background-color:white"
 
|+
 
!align=center style="background-color:ashgray"|다중 행 연산자
 
!align=center style="background-color:ashgray"|설명
 
|-
 
|align=center|IN
 
|align=center|서브쿼리의 결과에 존재하는 임의의 값과 동일한 조건을 의미한다.
 
|-
 
|align=center|ALL
 
|align=center|서브쿼리의 결과에 존재하는 모든 값을 만족하는 조건을 의미한다.
 
|-
 
|align=center|ANY
 
|align=center|서브쿼리의 결과에 존재하는 어느 하나의 값이라도 만족하는 조건을 의미한다.
 
|-
 
|align=center|EXISTS
 
|align=center|서브쿼리의 결과를 만족하는 값이 존재하는지 여부를 확인하는 조건을 의미한다.
 
|-
 
|}
 
==== 예시 ====
 
* 만약 T2 테이블의 C2 = 3 인 조건을 만족하는 C1 의 값이 2건 이상인 경우 = 이 아닌 IN 을 사용해야 한다.
 
  SELECT C1, C2, C3
 
  FROM T1
 
  WHERE C1 IN (SELECT C1
 
              FROM T2
 
              WHERE C2 &#61; '3')
 
  ORDER BY C1, C2, C3;
 
 
=== 다중 컬럼 서브쿼리 ===
 
* 서브쿼리 결과로 여러 개의 컬럼이 반환되어 메인쿼리의 조건과 동시에 비교되는 것을 의미한다.
 
==== 예시 ====
 
  SELECT C1, C2, C3
 
  FROM T1
 
  WHERE (C1, C2) IN (SELECT C1, C2
 
                    FROM T2
 
                    WHERE C2 &#61; '3')
 
  ORDER BY C1, C2, C3;
 
=== 연관 서브쿼리 ===
 
* 서브쿼리 내에 메인쿼리 컬럼이 사용된 서브쿼리이다.<ref name='sub_query_main'></ref>
 
==== 예시 ====
 
  SELECT T1.C1, T1.C2, T1.C3
 
  FROM T1 T1
 
  WHERE (T1.C1, T1.C2) IN (SELECT T2.C1, T2.C2
 
                          FROM T2 T2
 
                          WHERE T2.C2 &#61; T1.C2)    -- 메인 쿼리의 컬럼을 서브쿼리에 사용
 
  ORDER BY T1.C1, T1.C2, T1.C3;
 
  
 
{{각주}}
 
{{각주}}
  
 
== 참고자료 ==
 
== 참고자료 ==
* 꽁담,〈[https://mozi.tistory.com/233 서브쿼리란? 서브쿼리 사용해보기]〉, 2018-11-13
+
*  
 
== 같이 보기 ==
 
== 같이 보기 ==
* [[쿼리]]
+
*  
* [[SQL]]
 
  
 
{{데이터|검토 필요}}
 
{{데이터|검토 필요}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)