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
Posted
Filed under DataBase/MSSQL

MSSQL Management Studio 에서 해당 테이블에서 마우스 오른쪽을 눌러 트리거를 켜고 끌 수 도 있으나, 
SQL 쿼리문으로 Disable / Enable 시키는 방법 입니다.

1. 트리거 Disable
ALTER TABLE "테이블명"
DISABLE TRIGGER "트리거명"
※트리거가 걸린 테이블을 선택 해야 합니다.

2. 트리거 Enable
ALTER TABLE "테이블명"
ENABLE TRIGGER "트리거명"
※트리거가 걸린 테이블을 선택 해야 합니다.

2026/02/01 16:50 2026/02/01 16:50