DataBase 39

[Oracle] SQL WHERE 조건에서 컬럼 두 개 이상 묶어서 비교하기

오라클 SQL에서는 WHERE 조건에서 컬럼을 단일 값이 아닌 튜플(tuple) 형태로 묶어 비교할 수 있다. 즉, (컬럼1, 컬럼2) 와 같이 여러 컬럼을 하나의 집합으로 취급하고, IN 조건이나 비교 조건에 (값1, 값2) 쌍을 지정하는 방식이다. 이 방법은 다중 컬럼 조합을 효율적으로 비교할 때 유용하다. 1) 기본 문법-- 기본 형태WHERE (컬럼1, 컬럼2) IN ((값1, 값2), (값3, 값4), ...)즉, 컬럼 두 개 이상을 묶어서 조건 비교를 할 수 있다. 2) 예시2-1) 단일 컬럼 비교SELECT *FROM 직원WHERE 부서번호 IN (10, 20);일반적인 IN 조건은 위와 같이 단일 컬럼에 대해서만 적용된다.2-2) 두 컬럼 튜플 비교SELECT *FROM 직원WHERE (부..

DataBase/Oracle 2025.09.10

[Oracle] MERGE 문으로 Upsert 처리하기

데이터 동기화나 일괄 처리에서 흔히 필요한 작업이 바로 "존재하면 업데이트, 없으면 삽입(Upsert)"이다. Oracle에서는 이 목적을 위해 MERGE 문을 제공한다. 이번 글에서는 MERGE의 기본 개념, 장단점, 다양한 예제와 실무 적용 팁에 대해 알아보자. 마지막으로 어느 경우에 MERGE를 사용하면 좋고, 언제 피해야 하는지도 알아보자. 1) MERGE 개념MERGE는 대상 테이블(target)에 대해 소스(source) 데이터를 기준으로 매칭하여매칭되면 UPDATE, 매칭되지 않으면 INSERT를 한 번의 DML로 수행하는 문이다.일반적으로 다음과 같은 형태이다.MERGE INTO target tUSING (SELECT ... FROM source ...) sON (t.pk = s.pk)WH..

DataBase/Oracle 2025.08.12

[SQL] GROUP BY, HAVING 개념과 차이점

SQL에서 데이터를 그룹화하고 조건을 걸기 위해 자주 사용하는 GROUP BY와 HAVING은 혼동하기 쉬운 개념이다. 이 글에서는 두 키워드의 정의와 차이점, 그리고 함께 사용하는 방식까지 정리해보겠다. 1) GROUP BY1-1) 정의GROUP BY는 특정 컬럼을 기준으로 데이터를 그룹화하는 데 사용된다.주로 SUM, COUNT, AVG 등 집계 함수와 함께 사용한다.1-2) 특징SELECT 절에 명시된 컬럼 또는 집계 함수와 함께 사용해야 한다.WHERE 절보다 나중에 실행된다.집계된 결과를 기준으로 행을 그룹화한다.1-3) 예시SELECT department, COUNT(*)FROM employeesGROUP BY department;→ 부서별 직원 수를 구하는 쿼리이다. 2) HAVING2-1)..

DataBase/SQL 2025.08.08

[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

[SQL] 자주 쓰이는 숫자 연산 함수 정리 (ABS, POWER, SQRT, SIGN)

SQL에서는 숫자 계산 시 절댓값, 제곱, 제곱근, 부호 판단 등수학 연산이 필요한 경우가 많다.이번 글에서는 실무에서 자주 사용되는 수학 관련 숫자 함수들을 예제와 함께 정리해본다.Oracle을 기준으로 설명하며, 대부분의 DB에서 유사하게 지원된다. 1) ABS – 절댓값1-1) 문법ABS(number) 1-2) 특징입력된 숫자의 절댓값을 반환한다음수 → 양수로 변환, 양수 → 그대로 반환 1-3) 예시SELECT ABS(-10) AS a1, ABS(7.3) AS a2 FROM dual;a1: 10a2: 7.3 1-4) DB별 사용 가능 여부Oracle지원MySQL지원PostgreSQL지원MSSQL지원 2) POWER – 거듭제곱2-1) 문법POWER(base, exponent) 2-..

DataBase/SQL 2025.07.08

[SQL] 자주 쓰이는 숫자 함수 정리 (ROUND, TRUNC, CEIL, FLOOR, MOD)

SQL에서는 문자열 외에도 숫자 데이터를 다루는 경우가 많다.특히 금액 계산, 소수점 조정, 나머지 구하기 등 다양한 숫자 연산이 필요하다.이번 글에서는 실무에서 자주 사용하는 SQL 숫자 함수들을 예제와 함께 알아보자. 1) ROUND – 반올림1-1) 문법ROUND(number, decimal_places) 1-2) 특징숫자를 지정된 소수점 자리수에서 반올림한다두 번째 인자를 생략하면 정수로 반올림함 1-3) 예시SELECT ROUND(123.456, 2) AS r1, ROUND(123.456, 0) AS r2, ROUND(123.456) AS r3FROM dual;r1: 123.46r2: 123r3: 123 (자리수 생략 시 기본은 0) 1-4) DB별 사용 가능 여부Ora..

DataBase/SQL 2025.07.07