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
- Spring Frame Work
- Til
- 알고리즘
- 일정관리프로젝트
- 네트워크
- LV02
- Join
- 배열
- jpa blog
- mysql
- Java
- Lv.0
- 연습문제
- LV1
- 코테
- CoffiesVol.02
- JPA
- LV.02
- LV03
- 포트 폴리오
- 포트폴리오
- 프로그래머스
- Redis
- docker
- SQL
- LV0
- 이것이 자바다
- 디자인 패턴
- 데이터 베이스
- LV01
Archives
- Today
- Total
코드 저장소.
With 구문 본문
목차
1.With구문
2.CTE?
3.문법예
1.With구문
데이터 베이스에서 with절은 SQL문을 작성하다 보면 Query를 반복해서 사용하는 경우가 발생합니다. 한 두번의 반복은 괜찮지만, 그 수가 많아질수록 가독성이 떨어지고 재사용할 수 없어 매번 동일한 Query를 작성하거나 수정해야 합니다. 이런 문제점을 해소하는데 도움이 되는게 WITH구문입니다. 이 WITH구문을 알기 위해서는 CTE라는 개념을 알아야 합니다.
2.CTE?
CTE는 common table expressions 의 약자로 SELECT, INSERT , UPDATE, DELETE 쿼리를 실행할 때, 해당 쿼리 내부에서 CTE를 사용할 수 있으며, 이는 테이블처럼 영구적으로 저장되는게 아닌 쿼리가 실행되는 동안에만 임시로 존재하는 결과값을 말합니다. 그리고 CTE는 위에 말한 WITH구문을 통해 구현을 할 수 있습니다.
3.문법예
WITH구문은 다음과 같습니다.
단일 CTE일 경우
WITH cte as (
select... )
select
*
from cte
where .....
복수의 CTE일 경우
WITH
cte1 AS (SELECT ....),
cte2 as(SELECT....)
select * from
cte1
join
cte2
on
cte.id = cte2.id;
이렇게 CTE를 작성을 하면 다음과 같은 특징이 있습니다.
- 복잡한 SQL에서 반복적으로 사용되는 서브쿼리의 블록을 하나의 WITH절 블록으로 만들어 재사용 할 수 있게 함으로써 쿼리 성능을 높일 수 있다.
- subQuery와의 차이점은 subQuery의 경우에는 쿼리내에서만 사용이 가능하고 재사용이 불가능하지만, WITH구문으로 작성을 하면 재사용을 할 수 있다는 점이 차이점입니다.
'ComputerScience > DB' 카테고리의 다른 글
인덱스를 적용한 성능 개선 (0) | 2024.04.06 |
---|---|
[데이터 베이스] Lock 에 대해 알아보자. (0) | 2023.12.20 |
MySql[MariaDB] join (0) | 2023.03.11 |
[MySql] 조건문 (if,case문) (0) | 2023.03.01 |
[MySql] 결과 행 제한하기 - LIMIT (0) | 2023.02.26 |