DataBase/Oracle 29

[Oracle] 계층형 쿼리 CONNECT BY LEVEL

Oracle SQL에서는 계층형 데이터를 조회할 때 CONNECT BY 구문을 사용한다. 특히 LEVEL 키워드를 함께 활용하면, 반복적인 행 생성이나 트리 구조 데이터를 표현하는 데 매우 유용하다. 이 글에서는 CONNECT BY LEVEL의 기본 구조와 사용법을 다양한 예시와 함께 설명한다. 1) CONNECT BY LEVEL 기본 개념1-1) LEVEL이란?LEVEL은 계층형 쿼리에서 각 행이트리 구조 상에서 몇 번째 단계에 있는지를 나타내는 가상 컬럼이다.루트 노드는 LEVEL 1부터 시작되며,자식 노드로 내려갈수록 LEVEL 값이 증가한다.1-2) CONNECT BY란?CONNECT BY는 계층형 데이터를 탐색할 때부모-자식 관계를 정의하는 키워드이다.CONNECT BY PRIOR A = B 형..

DataBase/Oracle 2025.08.05

[Oracle] 오라클의 DUAL 테이블과 가상 컬럼 활용법

오라클 SQL을 작성하다 보면 자주 마주치는 DUAL 테이블과, 테이블 설계 시 유용하게 활용할 수 있는 가상 컬럼. 이 글에서는 두 개념의 정의와 특징, 그리고 실용적인 예제를 통해 사용하는 법을 정리한다. 1) 오라클의 DUAL 테이블1-1) 정의DUAL은 오라클에서 단일 행을 반환하는 특수한 테이블로,연산이나 함수 실행 결과를 조회할 때 사용한다.1-2) 특징오라클 내장 시스템 테이블이며 모든 사용자에게 존재한다.행은 1개, 컬럼은 1개(DUMMY 컬럼)로 구성되어 있다.SELECT 문에서 단순한 계산, 함수 테스트, 가상 데이터 생성 등에 활용된다.1-3) 예시-- 현재 날짜 조회SELECT SYSDATE FROM DUAL;-- 단순 연산SELECT 1 + 2 FROM DUAL;-- 문자열 결합S..

DataBase/Oracle 2025.08.05

[Oracle] 행을 열로, 열을 다시 행으로 바꾸는 함수(PIVOT, UNPIVOT)

Oracle SQL에서 PIVOT과 UNPIVOT 절은행과 열을 자유롭게 변환할 수 있게 해주는 기능이다.PIVOT은 집계된 행 데이터를 열로 회전시켜 요약 정보를 보기 쉽게 만들며, UNPIVOT은 열 형태의 데이터를 다시 행으로 풀어낼 수 있어 정규화나 전처리에 유용하다. 이 글에서는 PIVOT과 UNPIVOT의 기본 문법, 사용 방법, 그리고 실제 예시를 통해 데이터 구조를 효율적으로 바꾸는 방법을 알아본다. 1) PIVOT 정의PIVOT은 테이블의 행 데이터를 열로 회전시켜 요약된 형태로 변환하는 기능이다.주로 집계 함수와 함께 사용되며,GROUP BY 없이도 여러 값을 비교할 수 있는 열 중심 구조를 만들어준다. 2) PIVOT 문법 및 특징PIVOT은 서브쿼리 형태로 작성되며, 다음과 같은..

DataBase/Oracle 2025.07.22

[Oracle] 행을 문자열로 이어주는 LISTAGG 함수

LISTAGG 함수는 Oracle에서 여러 행으로 존재하는 문자열 데이터를 하나의 문자열로 연결할 때 사용하는 집계 함수이다. 특히 그룹별로 문자열을 구분자와 함께 연결할 수 있어, 보고서나 통계 데이터를 만들 때 매우 유용하게 사용된다. 이 글에서는 LISTAGG 함수의 문법과 특징, 기본 사용법부터 중복 제거 및 예외 처리 등 예시까지 함께 살펴본다. 1) 문법LISTAGG(컬럼명, '구분자') WITHIN GROUP (ORDER BY 정렬기준컬럼)- 컬럼명: 연결하고자 하는 문자열 컬럼 - '구분자': 각 항목 사이에 삽입할 문자 (예: 쉼표, 슬래시 등) - ORDER BY: 연결될 문자열의 정렬 기준 2) 특징여러 행의 문자열 값을 하나의 행으로 연결하여 출력ORDER BY를 통해 연결 순서..

DataBase/Oracle 2025.07.21

[Oracle] 순위 함수(DENSE_RANK, RANK 함수)

데이터를 순위별로 정렬할 때 자주 사용되는 Oracle의 분석 함수 중 DENSE_RANK와 RANK는 비슷한 역할을 하지만, 중복 순위 발생 시 처리 방식에서 차이가 있다. 두 함수 모두 OVER 절과 함께 사용되어 순위를 매기며, 다양한 통계 처리나 보고서 쿼리에서 유용하게 활용된다. 이 글에서는 DENSE_RANK와 RANK의 문법과 차이점, 실제 사용 예시를 중심으로 알아보자. 1) DENSE_RANK 함수1-1) 정의DENSE_RANK는 동일한 값에 같은 순위를 부여하며, 그 다음 순위는 건너뛰지 않고 연속된 숫자로 부여되는 순위 함수이다. 1-2) 문법DENSE_RANK() OVER (PARTITION BY 컬럼명 ORDER BY 컬럼명) 1-3) 특징동일한 값(동순위)에는 같은 순위를 부여함..

DataBase/Oracle 2025.07.17

[Oracle] CASE WHEN – 조건 분기 처리

SQL에서 조건에 따라 다른 결과를 반환하고 싶을 때 가장 자주 사용하는 구문이 CASE WHEN이다.지난 글에서 다뤘던 DECODE도 조건 분기 처리에 유용하지만, 복잡한 조건을 처리하거나 비교 대상이 여러 개인 경우엔 CASE WHEN이 훨씬 가독성이 좋고 안정적이다.이번 글에서는 CASE WHEN의 기본 문법부터, 심화 예시, DECODE와의 비교까지 정리해봤다. 1) CASE WHEN1-1) 문법-- 단순 비교CASE expr WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE defaultEND-- 조건식 비교 (가장 많이 사용)CASE WHEN condition1 THEN result1 WHEN condition2 THEN re..

DataBase/Oracle 2025.07.03

[Oracle] DECODE 함수

SQL에서 조건에 따라 다른 값을 보여줘야 할 때 보통은 CASE WHEN을 쓰는데,Oracle에서는 그보다 더 간단하게 사용할 수 있는 DECODE 함수가 있다.DECODE는 특정 값과 비교해서 일치하는 조건에 따라 결과를 다르게 반환해주는 함수로, 단순한 조건 분기에서는 CASE보다 훨씬 간단하게 쓸 수 있다.이번 글에서는 DECODE 함수의 문법, 특징, 예시까지 한 번에 정리해봤다. 1) DECODE1-1) 문법DECODE(expr, search1, result1 [, search2, result2, ...] [, default]) 1-2) 특징expr 값이 search 값과 일치하면 해당 result 값을 반환한다일치하는 값이 없을 경우 마지막 default 값을 반환한다 (생략 시 NULL ..

DataBase/Oracle 2025.07.01

[Oracle] 정규표현식(REGEXP) 자주 사용하는 패턴 4가지

정규표현식을 사용할 수 있는 REGEXP_함수를 익혔다면, 실제로 어떤 패턴을 자주 쓰는지도 알아두면 좋다. 이번 글에서는 실무에서 자주 쓰이는 4가지 정규표현식 패턴을 예제와 함께 간단히 정리해봤다. 1) REGEXP_COUNT1-1) 문법REGEXP_COUNT(source_string, pattern [, position [, match_parameter]]) 1-2) 특징정규표현식 패턴이 문자열 내에 몇 번 등장하는지 세는 함수\d, \s, [a-z] 등 정규식 패턴을 사용 가능match_parameter에 'i'를 넣으면 대소문자 무시 1-3) 예시SELECT REGEXP_COUNT('banana', 'a') AS cnt_a, REGEXP_COUNT('abc123xyz456', '\d') A..

DataBase/Oracle 2025.06.30

[Oracle] 정규표현식 함수 정리(REGEXP_COUNT, REGEXP_SUBSTR, REGEXP_REPLACE)

오라클에서 자주 사용하는 정규표현식 함수는 REGEXP_COUNT, REGEXP_SUBSTR, REGEXP_REPLACE가 있다.단순한 LIKE, SUBSTR로는 부족한 문자열 처리도 이 세 가지 함수로 훨씬 유연하게 다룰 수 있다.각 함수의 문법, 특징, 예시를 하나씩 알아보자. 1) REGEXP_COUNT1-1) 문법REGEXP_COUNT(source_string, pattern [, position [, match_parameter]]) 1-2) 특징문자열 안에서 정규표현식에 해당하는 패턴이 몇 번 등장하는지 센다.\d, \s, [a-z] 등 다양한 정규식 패턴을 사용할 수 있다.대소문자 구분 없이 세려면 [aA] 또는 match_parameter에 'i' 옵션 사용간단한 유효성 체크나 필터링 조건..

DataBase/Oracle 2025.06.26

[Oracle] EXISTS, NOT EXISTS 함수 사용법과 예시

ORACLE의 EXSITS는 WHERE 절에서 조건에 부합하는데이터를 조회하기 위해 주로 사용하는데,EXISTS를 사용하는 이유와 사용 방법, 예시를 알아보자. 1) EXISTS: 서브 쿼리 조건에 만족하는 모든 데이터를 반환하는 함수이다.주로 WHERE 절에서 조건에 맞는 데이터를 찾기 위해 사용하며,CASE 문에서 조건으로 사용할 수도 있다.1-1) EXISTS 특징EXISTS는 결과에 부합하는 데이터를 출력,NOT EXISTS는 결과에 부합하지 않는 데이터를 출력함결과를 TRUE/FALSE로 반환하여 CASE문의 조건으로 사용 가능IN 함수에 비해 성능이 좋아 대용량 데이터에 용이함 2) NOT EXISTS: EXISTS 함수와 반대로,서브 쿼리 조건에 만족하지 않는 데이터들만 반환하는 함수이다. ..

DataBase/Oracle 2025.06.13