Posted
Filed under DataBase/Oracle

오라클 SQL을 작성하다 보면 가장 많이 만나는 데이터가 바로 NULL이죠. 이 NULL 값을 아주 스마트하게 처리해주는 효자 함수, NVLNVL2를 이해하기 쉽게 정리해 드립니다!

1. NVL 함수: "NULL이면 이거 써!"

가장 직관적인 함수입니다. 컬럼 값이 비어있을(NULL) 때만 특정 값으로 채워줍니다.

 

  • 구조: NVL(대상컬럼, NULL일 때 값)

  • 언제 쓸까? * 숫자 연산 시 NULL을 0으로 바꾸고 싶을 때

    • 이름이 없는 경우 '이름없음'으로 표시하고 싶을 때

2. NVL2 함수: "있으면 이거, 없으면 저거!"

NVL보다 한 단계 진화한 함수입니다. 데이터가 있는 경우없는 경우 두 가지 상황을 모두 컨트롤할 수 있습니다.

  • 구조: NVL2(대상컬럼, NULL이 아닐 때 값, NULL일 때 값)

  • 언제 쓸까? * 연락처 유무에 따라 '연락가능', '연락불가'라는 상태값을 주고 싶을 때

    • 보너스가 있으면 '대상자', 없으면 '비대상자'로 구분하고 싶을 때

3. SQL 예제
SELECT 
    NAME,
    -- 전화번호가 없으면 '010-0000-0000'으로 채움
    NVL(PHONE, '010-0000-0000') AS NVL_결과,
    
    -- 전화번호가 있으면 'Y', 없으면 'N' 표시
    NVL2(PHONE, 'Y', 'N') AS NVL2_결과
FROM USERS;

2026/03/18 20:33 2026/03/18 20:33
Posted
Filed under DataBase/Oracle
1. Oracle Join (기존 전통 방식)

Oracle 9i 이전부터 사용되던 방식으로, FROM 절에 테이블을 나열하고 WHERE 절에서 조인 조건을 처리하는 것이 특징입니다.

  • 특징: 쉼표(,)로 테이블을 구분합니다.

  • 장점: 쿼리가 간결해 보일 수 있고, 오래된 Oracle 레거시 프로젝트에서 자주 마주칩니다.

  • 단점: 조인 조건과 일반 검색 조건이 WHERE 절에 한데 섞여 있어, 테이블이 많아질수록 쿼리 해석이 어렵습니다.

-- [Oracle Join 예시]
SELECT e.ename, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno  -- 조인 조건
  AND e.sal > 2000;        -- 검색 조건

2. ANSI Join(표준방식)

미국 국립 표준 협회(ANSI)에서 제정한 표준 SQL 문법입니다. Oracle 뿐만 아니라 MySQL, PostgreSQL 등 대부분의 DBMS에서 공통으로 사용됩니다.

  • 특징JOIN 키워드와 ON 절을 사용합니다.

  • 장점: 조인 조건(ON)과 일반 조건(WHERE)이 명확히 분리되어 가독성이 매우 뛰어납니다.

  • 단점: Oracle 방식보다 쿼리가 다소 길어질 수 있습니다.

-- [ANSI Join 예시]
SELECT e.ename, d.dname
FROM emp e
JOIN dept d ON e.deptno = d.deptno -- 조인 조건 분리
WHERE e.sal > 2000;                -- 검색 조건 분리

구분 Oracle Join ANSI Join
조인 키워드 없음 (쉼표로 구분) INNER JOINLEFT OUTER JOIN 등
조건 명시 WHERE 절에 모두 포함 ON (조인), WHERE (필터) 분리
Outer Join (+) 기호 사용 LEFT/RIGHT/FULL OUTER JOIN
범용성 Oracle 전용 모든 DBMS 공통 (표준)
3. Outer Join 의 결정적 차이
가장 큰 차이는 역시 외부 조인(Outer Join) 표현식입니다.

Oracle의 (+) 방식

데이터가 없는 쪽에 (+) 기호를 붙여줍니다.

ANSI의 방향 명시 방식

 

직관적으로 어느 쪽 테이블을 기준으로 할지 명시합니다.

2026/02/10 09:41 2026/02/10 09:41