[Oracle SQL] 데이터 조회의 핵심! WHERE 절과 문자열 함수 완벽 정복하기

안녕하세요! 오늘은 SQL 문법 중에서 가장 많이 쓰이면서도 중요한 WHERE 절과 데이터를 가공하는 문자열 함수를 정리해 보겠습니다. 데이터 분석의 기초 체력을 길러보러 가실까요? 😊

1. WHERE 절: 데이터 필터링의 기본 규칙

내가 원하는 조건의 데이터만 뽑아올 때 사용하는 WHERE 절! 여기에도 몇 가지 중요한 규칙이 있습니다.

  • 숫자 vs 문자/날짜: 숫자는 그냥 쓰지만, 글자와 날짜는 반드시 작은따옴표(' ')로 감싸줘야 합니다.
  • 대소문자 구분: 데이터 내부의 문자값은 대소문자를 엄격하게 구분하니 주의하세요!
  • 성능 팁: BETWEEN 연산자보다 비교 연산자(>=, <=)를 사용하는 것이 내부적으로 조금 더 빠릅니다.

주요 연산자 활용법

  • IN 연산자: WHERE deptno IN(10, 20) → 부서 번호가 10번 이거나 20번인 데이터를 모두 찾습니다.
  • LIKE 연산자: 특정 패턴을 찾을 때 사용합니다.
    • %는 ‘뭐든지’라는 뜻이에요. 하지만 %80처럼 앞에 %를 붙이면 인덱스(INDEX)를 타지 못해 검색 속도가 느려집니다. 가급적 뒤에 붙이는 습관을 들이면 좋습니다!

2. NULL과 이상치(Outlier) 처리

데이터를 다루다 보면 비어있거나 쓸 수 없는 값들을 만나게 됩니다.

  • 결측치(Null): 값이 비어있는 상태입니다.
  • 주의사항: NULL은 = 연산자로 찾을 수 없습니다! 반드시 IS NULL 또는 IS NOT NULL을 사용해야 합니다.
    • (O) WHERE comm IS NULL
    • (X) WHERE comm = NULL

3. 문자열을 자유자재로! SUBSTR & INSTR

데이터에서 이름만 추출하거나, 이메일 주소에서 도메인만 뽑아내고 싶을 때 사용하는 마법 같은 함수들입니다.

SUBSTR: 문자열 자르기

SUBSTR(데이터, 시작위치, 자를글자수)

  • 글자수를 생략하면 시작 위치부터 끝까지 다 잘라옵니다.
  • SUBSTR('abcde', 3, 2) → 결과: cd (3번째 글자인 c부터 2글자)

INSTR: 위치 찾기

INSTR(데이터, 찾는글자, 시작위치, 몇번째인지)

  • 특정 문자가 몇 번째 자리에 있는지 숫자로 알려줍니다.
  • INSTR('A-B-C-D', '-', 3, 1) → 결과: 4 (3번째 자리인 B부터 찾기 시작해서 첫 번째로 나오는 ‘-‘의 위치)

4. 실전! 이메일 도메인 추출하기 (심화)

교수님들의 이메일 주소에서 서비스 제공업체(naver, hanmail 등)만 쏙 뽑아내는 쿼리, 이렇게 짤 수 있습니다!

SQL

SELECT profno, name, 
       SUBSTR(email, INSTR(email, '@') + 1, 
       INSTR(email, '.', 1, 1) - INSTR(email, '@') - 1) "EMAIL_DOMAIN"
FROM professor;
  • @ 다음 위치부터 . 이전 위치까지만 계산해서 자르는 원리입니다. 복잡해 보이지만 하나씩 뜯어보면 아주 논리적이죠?

5. 데이터 가공하기: REPLACE & RPAD

REPLACE: 문자 바꾸기

REPLACE(데이터, '원래문자', '바꿀문자')

  • 이름의 가운데 글자를 마스킹하거나, 주민번호 뒷자리를 가릴 때 유용합니다.
  • REPLACE(jumin, SUBSTR(jumin, 7, 7), '-/-/-/-') → 개인정보 보호를 위해 유용하게 쓰이겠죠?

RPAD: 오른쪽 채우기

특정 길이만큼 문자를 채워넣을 때 사용합니다.

  • 예를 들어, 이름 뒤에 숫자를 덧붙여 일정한 길이를 만들 때 사용합니다.

마치며

SQL은 단순히 데이터를 가져오는 것을 넘어, 어떻게 효율적으로(인덱스 활용) 그리고 깨끗하게(함수 활용) 가공하느냐가 실력을 결정합니다.

오늘 정리한 WHERE 절의 규칙과 문자열 함수들을 직접 연습장에 쿼리로 작성해 보세요! 🙂


#OracleSQL #SQL초보 #데이터베이스 #WHERE절 #SUBSTR #INSTR #데이터분석 #코딩공부