Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스레드
- 인스턴스
- social login
- object
- DI
- 프로세스
- 항해99장점
- bean
- Instance
- IoC
- Thread
- jvm
- 부트캠프추천
- 객체
- Dependency Injection
- jwt
- class
- 회고록
- 인스턴스화
- 오브젝트
- inversion of control
- 항해99단점
- process
- 소셜로그인
- 쓰레드
- 클래스
- 소셜
- API
- 항해99솔직후기
- 객체지향 프로그래밍
Archives
- Today
- Total
로운's 기술노트
[문법] WITH, WITH RECURSIVE 구문 본문
▶ 공통 테이블 표현식 (CTE, Common Table Expression)
WITH 및 WITH RECURSIVE는 공통 테이블 표현식(CTE)을 정의하는 데 사용되는 SQL 구문으로 쿼리 내에서 임시 결과 집합을 정의하고 그것을 다른 쿼리에서 참조할 수 있게 해준다. 이를 통해 복잡한 쿼리를 간결하게 만들고 가독성을 향상시킨다는 장점이 있다. 그러나 오히려 CTE를 무분별하게 사용할 경우엔 오히려 가독성이 저하되고 성능 문제가 발생할 수 있다.
ㅇ WITH 구문
- 주 사용처 : 임시 테이블 명의 사용하여 값을 참조.연산할 경우
- 사용 방법
WITH 임시테이블명 AS (
SELECT *
FROM 테이블명
)
- 주의사항
- 모든 임시 테이블이 결과 집합에 사용되지 않을 경우에만 사용해야 한다. 불필요한 임시 테이블을 정의하면 성능에 영향을 줄 수 있다.
- 기본적으로 쿼리의 가독성을 향상시킬 수 있지만, 너무 많은 WITH 구문을 사용하면 쿼리가 복잡해질 수 있다. 따라서 필요한 경우에만 사용하는 것이 좋다.
ㅇ WITH RECURSIVE 구문
- 주 사용처 : 임시 테이블을 생성하면서 자신의 값을 참조하여 값을 연산할 경우
계층적인 데이터 구조를 연산할 경우 (조직도 등)
- 사용 방법
WITH RECURSIVE 임시테이블명 AS (
SELECT * -- 초기값 설정
FROM 테이블명
UNION ALL
SELECT * -- 재귀식 설정
FROM 임시테이블명
WHERE -- 정지조건
)
- 주의사항
- 재귀 쿼리는 반복적으로 결과를 생성하므로 적절한 종료 조건을 필수적으로 명시. 종료 조건이 없으면 쿼리가 무한 루프에 빠질 수 있다.
- 재귀 쿼리가 복잡할 경우 성능이 저하될 수 있으므로, 필요한 경우에만 사용하는 것이 좋다.
'내배캠_데이터분석가_'24.04~08 > SQL' 카테고리의 다른 글
[프로그래머스] 입양 시각 구하기(2) (COALESCE) (2) | 2024.04.29 |
---|---|
Error_Note (0) | 2024.04.25 |
[문법] DATE_FORMAT() 함수 (0) | 2024.04.24 |
[프로그래머스] 조건에 부합하는 중고거래 댓글 조회하기 (0) | 2024.04.23 |
[프로그래머스] 오프라인/온라인 판매 데이터 통합하기 (UNION) (0) | 2024.04.23 |
Comments