DBMS

SQL - 서브쿼리

전주천둥새 2023. 5. 15. 15:02

- SQL 쿼리문 내부에서 하위에 존재하는 쿼리(SQL문 안의 SQL문)

1) 스칼라 서브쿼리

- SELECT문에 있는 서브쿼리 (1행만 반환해야함)

2) 인라인뷰

- from 절에 있는 서브쿼리

3) 서브쿼리

- where 절에 있는 서브쿼리

4) 단일행서브쿼리

5) 다중행 연산자

1. 다중행 서브쿼리 (IN) >> OR 연산의 결과값

2. 다중행 서브쿼리 (ANY, SOME) >> OR 연산의 결과값

>> SOME은 ANY의 별칭으로 둘다 결과는 같다.

- ANY

- SOME

3. 다중행 서브쿼리 (ALL) >> AND 연산의 결과값

4. 다중행 서브쿼리 (EXISTS) >> IN과 같은결과 출력(OR연산)

>>> 속도차이때문에 사용

5. 다중컬럼 서브쿼리 : 기존의 서브쿼리는 컬럼결과가 하나만 출력되지만, 여러개의 결과가 출력된다.

6) UNION

- 여러개 쿼리의 합집합

- 여러개 SQL문을 합쳐 하나의 SQL 문으로 만들어주는 방법

(기본으로 중복으로 제거 > 중복값도 보고싶으면 UNION ALL 사용)

6-1) UNION ALL

- 기본적으로 UNION은 중복값을 제거한 결과가 출력되기때문에 중복결과를

포함하여 출력하고 싶다면 UNION ALL 사용

- 속도는 UNION ALL이 더 빠르다(삭제작업이 없기 때문)

******규칙******

- 각 SELECT의 컬럼의 수가 같아야 한다.

- 컬럼명이 같아야 한다. ( 같지 않을 경우 alias를 사용하여 같게 만듦(mysql에서는 허용된다)

- 컬럼별 데이터타입이 같아야 한다. ( 반환 가능한 형태 )

- 하나의 ORDER BY만 사용한다.

- SELECT문들의 순서는 상관없다.