▶ 쿼리(Query): 데이터베이스에 원하는 정보를 검색하기 위해 요청하는 것
▶ 서브쿼리(Sub Query): 메인쿼리 안에 또 다른 SELECT 문이 있는 명령어
* 서브 쿼리 종류
1) SELECT절 서브 쿼리
- 테이블의 열 추가하는 명령어, 스칼라(Scala) 서브쿼리라고도 함
- JOIN 활용하지 않고 다른 테이블의 정보 가져올 수 있음
- 데이터 결합(JOIN)과 비교했을 때 처리 속도가 느려 잘 사용 X
예시)
SELECT *
, (SELECT GENDER FROM CUSTOMER WHERE A.MEM_NO = MEM_NO) AS GENDER
FROM SALES AS A;
→ 테이블 결합 사용하지 않고 SALES 테이블에 CUSTOMER 테이블의 GENDER 열이 함께 조회됨
2) FROM절 서브 쿼리
- FROM 절 안의 테이블로 사용되는 서브쿼리
- 열 이름 및 테이블명을 지정해주어야 함
- 세가지 서브 쿼리 중 분석에서 가장 많이 사용됨 (테이블 결합 JOIN과 함께)
FROM 절 뒤에는 테이블명, GROUP BY는 기존 테이블을 새로운 테이블로 생성
FROM 절 서브쿼리 + JOIN 예시)
회원별 구매횟수 테이블 및 회원 테이블을 결합 후 임시테이블로 저장
CREATE TEMPORARY TABLE 임시테이블명
SELECT A.구매횟수
B.*
FROM (
SELECT MEM_NO
,COUNT(ORDER_NO) AS 구매횟수
FROM SALES
GROUP
BY MEM_NO
) AS A
INNER
JOIN CUSTOMER AS B
ON A.MEM_NO = B.MEM_NO;
3) WHERE절 서브 쿼리
WHERE절 안에 리스트 형태로 사용할 수 있는 명령어
예시)
CUSTOMER 테이블의 가입일자가 2019인 회원의 주문 횟수 구하기
SELECT COUNT(ORDER_NO) AS 주문횟수
FROM SALES
WHERE MEM_NO IN (SELECT MEM_NO FROM CUSTOMER WHERE YEAR(JOIN_DATE=2019);
* YEAR : 날짜형 함수, 연도 반환함
* IN 연산자에서는 ( ) 안에 리스트 형태가 와야 함
(SELECT MEM_NO FROM CUSTOMER WHERE YEAR(JOIN_DATE=2019)는
2019년의 회원번호 리스트
결과 →
주문횟수 |
2685 |
이런식으로 나타남
'IT 기초 > SQL' 카테고리의 다른 글
[SQL 활용] 연산자 및 함수 - 함수 (0) | 2023.04.04 |
---|---|
[SQL 활용] 연산자 및 함수 - 연산자 (0) | 2023.04.04 |
[SQL 문법] 테이블 결합(JOIN) (0) | 2023.04.01 |
[SQL 기본구조] SQL 정의, 관계형 데이터베이스, SQL 명령어 (0) | 2023.03.31 |
[SQL 문법] 데이터 조회 (SELECT) (0) | 2023.03.30 |