1. Sub Query
SQL문 내에서 하위에 존재하는 쿼리 (SQL문 안에 SQL)
1] 스칼라 서브쿼리
SELECT문에 있는 서브쿼리 (1행만 반환)
SELECT
g.g_code
,g.g_name
,g.g_price
,g.g_seller_id
,g.g_reg_date
FROM
(SELECT
*
,( SELECT
ROUND(AVG(gAvg.g_price), 0)
FROM
tb_goods AS gAvg) AS '평균단가'
FROM
tb_goods ) AS g
WHERE
g.g_price > g.평균단가;
2] 인라인 뷰
FROM 절에 있는 서브쿼리
SELECT
g.g_code
,g.g_name
,g.g_price
,g.g_seller_id
,g.g_reg_date
FROM
tb_goods AS g
JOIN
( SELECT
ROUND(AVG(g.g_price), 0) AS '평균단가'
FROM
tb_goods AS g) AS gAvg
WHERE
g.g_price > gAvg.평균단가;
3] 서브쿼리
WHERE 절에 있는 서브쿼리
SELECT
g.g_code
,g.g_name
,g.g_price
,g.g_seller_id
,g.g_reg_date
FROM
tb_goods AS g
WHERE
g.g_price > ( SELECT
ROUND(AVG(g.g_price), 0)
FROM
tb_goods AS g );
4] 단일 행 서브쿼리
서브쿼리의 결과가 1개 일때 "="

5] 다중 행 서브쿼리
서브쿼리의 결과가 여러 개 일때 "IN"

6] 다중 컬럼 서브쿼리
서브쿼리의 컬럼 결과가 여러 개 일때

2. UNION
1] 정의
① 여러 개의 쿼리의 합집합
② 여러 개의 SQL문이 합쳐 하나의 SQL문으로 만들어주는 방법
2] UNION / UNION ALL
① UNION : 여러 개의 쿼리의 중복 값을 제거한 결과
② UNION ALL : 여러 개의 쿼리 결과가 중복 되더라도 전부 결과에 반영
③ 처리 속도 : UNION ALL > UNION ; 중복 되는 쿼리를 빼주기 때문
3] 규칙
① 각 SELECT의 컬럼의 수가 같아야 한다.
② 컬럼명이 같아야 한다. ( 같지 않을 경우 alias를 사용하여 같게 만듦)
③ 컬럼별 데이터타입이 같아야 한다. ( 반환 가능한 형태 )
④ 하나의 ORDER BY만 사용한다.
⑤ SELECT문들의 순서는 상관없다.
'Backend > DataBase' 카테고리의 다른 글
DB - stored Program ; 프로시저 , 사용자 정의함수 (0) | 2020.04.13 |
---|---|
DB - VIEW (0) | 2020.04.06 |
DB - 정규화 (0) | 2020.04.01 |
DataBase 데이터베이스 설계 (0) | 2020.03.25 |
DB 생성 문장 및 사용자 계정 접근 권한 부여 (0) | 2020.03.19 |
댓글