안녕하세요! 오늘은 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
- (O)
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 #데이터분석 #코딩공부