반응형

데이터베이스 내장함수 활용 완전정복 🚀

SQL 문법만 아신다고요?
진짜 실무는 내장함수로 승부 납니다!
데이터 가공의 핵심 무기, 이제부터 제대로 알아봅시다!

 

 

안녕하세요! 😊

오늘은 SQL을 조금 더 실용적이고 똑똑하게 다루기 위해 꼭 알아야 할 데이터베이스 내장함수에 대해 이야기해볼까 해요.

단순한 SELECT, INSERT에서 머무르던 시절은 이제 안녕~ 문자열을 다듬고, 날짜를 변환하고, 숫자를 정리하는 실전 기술들을 함께 배워볼 거예요.

특히나 초보자분들도 이해할 수 있도록 예제 중심으로 준비했으니 끝까지 따라오시면 어느새 데이터 마법사가 되어 있을지도 모릅니다✨

자, 그럼 지금부터 출발해볼까요?

1. 단일행 내장 함수란? 🧩

SQL에서 단일행 내장 함수란, 하나의 행에 대해 하나의 결과값을 반환하는 함수들을 말합니다.

즉, 테이블의 각 행마다 각각 계산을 수행하고 결과를 돌려주는 함수들이죠.

복잡한 계산, 문자열 처리, 날짜 포맷 변경 등 일일이 수동으로 처리하려면 머리 아픈 작업들을 이 함수들이 척척 대신 처리해줍니다.

단일행 함수는 아래와 같이 크게 네 가지로 나눌 수 있어요:

  • 문자열 함수: 텍스트 다듬기, 길이 계산, 문자열 결합 등
  • 숫자 함수: 반올림, 절댓값 계산, 올림/내림 처리 등
  • 날짜/시간 함수: 현재 시각 불러오기, 날짜 더하기/빼기, 포맷 변경 등
  • 변환 함수: 데이터 타입 변환, NULL 처리 등

📌 실무에서 단일행 함수가 중요한 이유

실제 업무에서 데이터를 직접 눈으로 보고 수정하거나 정제하는 건 너무 비효율적이죠.

예를 들어

이름 뒤에 불필요한 공백이 있다거나, 날짜 형식이 들쭉날쭉하거나, 가격이 정수로 처리돼야 할 때...

이럴 때 단일행 함수 하나면 수천, 수만 건의 데이터를 한 번에 처리할 수 있어요!

🛠️ 대표 예시: UPPER(), LOWER(), LENGTH()

함수 설명 예시
UPPER() 문자를 모두 대문자로 변환 UPPER('hello') → 'HELLO'
LOWER() 문자를 모두 소문자로 변환 LOWER('HELLO') → 'hello'
LENGTH() 문자열의 길이를 반환 LENGTH('hello') → 5

앞으로 각 유형별로 더 디테일하게 들어갈 테니까, 지금은 전체 그림만 이해하시면 돼요!

다음 섹션에서는 가장 많이 쓰이는 문자열 함수들을 하나하나 파헤쳐보겠습니다.

 

 

2. 문자열 함수 정복하기 (CONCAT, LENGTH 등) 🔡

문자열 함수는 텍스트 데이터를 다루는 데 필수예요.

고객 이름을 조합하거나, 불필요한 공백을 제거하고, 특정 위치의 글자만 뽑아내는 작업은 거의 매일 한다고 봐야 합니다.

이번 장에서는 실무에서 가장 많이 쓰는 네 가지 함수,

CONCAT, LENGTH, SUBSTRING, REPLACE를 예제로 설명드릴게요.

🔗 CONCAT(): 문자열 결합

CONCAT() 함수는 두 개 이상의 문자열을 붙여주는 역할을 합니다.
예를 들어,

성과 이름이 따로 저장되어 있다면 이걸 하나의 전체 이름으로 만드는 데 유용하죠.

예시 결과
CONCAT('김', '민수') 김민수
CONCAT(이름, '(', 직책, ')') 홍길동(과장)

🔢 LENGTH(): 문자열 길이

LENGTH() 함수는 문자열이 몇 자로 구성되어 있는지 알려줘요.

고객 ID가 너무 짧거나 너무 길 경우를 필터링하는 데 유용합니다.

  • LENGTH('hello') → 5
  • LENGTH('데이터') → 9 (UTF-8 환경에서는 한글 1글자가 3바이트로 처리됨)

✂️ SUBSTRING(): 문자열 일부 추출

SUBSTRING() 함수는 문자열에서 특정 위치의 일부만 잘라낼 때 사용돼요.

주민등록번호에서 생년월일만 뽑는다거나, 전화번호 뒷자리만 보는 경우 아주 유용합니다.

예시 결과
SUBSTRING('20250406', 1, 4) 2025
SUBSTRING('홍길동과장', 1, 3) 홍길동

🔁 REPLACE(): 특정 문자 교체

REPLACE()는 문자열 안에서 특정 단어를 다른 단어로 바꿔주는 함수입니다.
광고 문자에서 "[광고]"를 없앤다거나, 전화번호 형식에서 '-'를 제거할 때 자주 써요.

  • REPLACE('010-1234-5678', '-', '') → 01012345678
  • REPLACE('[광고]특가상품!', '[광고]', '') → 특가상품!

이처럼 문자열 함수만 잘 활용해도 데이터 가공의 절반은 끝난 셈이에요.
다음 섹션에서는 또 하나의 실무 핵심, 날짜/시간 함수에 대해 살펴볼게요.

출생년도, 가입일, 오늘 기준으로 몇 일 지났는지… 날짜 다루는 게 은근히 어렵거든요!

 

 

3. 날짜와 시간 함수 완전 분석 (NOW, DATE_ADD 등) 📆

날짜/시간 함수는 실무에서 진짜 많이 쓰여요.

회원 가입일, 주문일, 배송 예정일, 생년월일… 이 모든 데이터가 ‘날짜’ 형태로 저장되잖아요?

단순히 저장만 해선 의미가 없고,

가공해서 '오늘 기준 몇 일 지났는지',

              '이번 달에 가입한 사람은 몇 명인지' 같은 정보를 뽑아내야 쓸모가 생깁니다.

 

오늘은 NOW(), DATE_FORMAT(), DATE_ADD() 같은 꿀 함수들을 함께 살펴볼게요 🔍

⏰ NOW(): 현재 날짜와 시간

NOW()는 지금 이 순간의 날짜와 시간을 반환하는 함수입니다.

서버 시간 기준이기 때문에 실시간 로깅이나 가입일 자동 기록 등에 자주 사용돼요.

SQL 예시 결과 예시
SELECT NOW(); 2025-04-06 22:32:18

📅 DATE_FORMAT(): 날짜 포맷 변경

날짜는 DB 안에서 보관할 땐 괜찮지만, 그대로 사용자에게 보여주기엔 좀 불친절하죠?
DATE_FORMAT() 함수는 YYYY년 MM월 DD일 같은 친절한 형식으로 바꿔주는 데 유용해요.

예시 설명
DATE_FORMAT(NOW(), '%Y-%m-%d') ‘2025-04-06’ 형식으로 출력
DATE_FORMAT(NOW(), '%Y년 %m월 %d일') ‘2025년 04월 06일’로 출력

➕ DATE_ADD(): 날짜 계산

예:

“가입일로부터 30일 후”를 알고 싶을 때 유용한 함수가 바로 DATE_ADD()입니다.
날짜에 일(day), 월(month), 연(year) 등을 더하거나 뺄 수 있어요.

  • DATE_ADD('2025-04-01', INTERVAL 7 DAY) → 2025-04-08
  • DATE_ADD(NOW(), INTERVAL 1 MONTH) → 다음 달 오늘

🧠 정리 팁

  • NOW() → 현재 시간 얻기
  • DATE_FORMAT() → 사용자에게 보여줄 날짜 형식으로 변환
  • DATE_ADD() → 특정 날짜에 일/월/년 더하기

 

다음 섹션에서는 계산의 핵심, 숫자 함수로 넘어가 볼게요.

가격 반올림, 절댓값, 올림·내림 처리까지... 실수형 숫자 다루는 방법을 정리해드립니다 💡

 

 

4. 숫자 함수 제대로 쓰기 (ROUND, CEIL, ABS 등) 🔢

숫자 데이터를 다룰 때 가장 많이 하는 실수?

바로 반올림 또는 절삭을 제대로 못 하는 거예요.

예를 들어,

할인율 계산 후 소수점 몇 자리까지 보여줄지, 총액을 올림해서 결제 처리할지…

이런 게 바로 실전 문제죠.

 

여기서는 대표적인 숫자 처리 함수인 ROUND(), CEIL(), FLOOR(), ABS()를 소개할게요!

🔘 ROUND(): 반올림

ROUND()는 특정 소수점 자리까지 반올림하는 함수입니다.

계산 결과를 보기 좋게 정리할 때 사용되죠.

SQL 결과
ROUND(3.14159, 2) 3.14
ROUND(99.999) 100

🔼 CEIL(): 올림

CEIL() 함수는 소수점을 무조건 올림해서 정수로 만들어줍니다.

예:

택배비, 결제 금액 등 반올림보다 올림이 필요한 상황에서 사용!

  • CEIL(5.2) → 6

🔽 FLOOR(): 내림

FLOOR()무조건 내림하는 함수예요.

할인 계산에서 고객에게 유리하게 금액을 조정할 때 종종 사용됩니다.

  • FLOOR(5.9) → 5

➖ ABS(): 절댓값

ABS() 함수는 음수를 양수로 바꾸는 절댓값 계산용입니다.

실수 계산에서 마이너스 값만 제거할 때 편리하죠.

  • ABS(-100) → 100

🎯 언제 어떤 숫자 함수를 써야 할까?

상황 추천 함수
소수 둘째 자리까지 보여줄 때 ROUND()
결제 금액 올림 처리 CEIL()
할인 금액 내림 계산 FLOOR()
손실 수치를 양수로 정리 ABS()

숫자 함수를 제대로 알면 데이터 품질이 달라지고, 고객에게 보여주는 정보도 훨씬 깔끔해져요.


이제 다음 섹션에서 이 모든 함수들을 활용한 실전 예제를 함께 풀어보겠습니다! 💪

 

 

5. 실전 예제: 생년월일 가공, 상품 정보 조합 💡

지금까지 배운 문자열 함수, 날짜 함수, 숫자 함수들을 실전에 어떻게 활용할 수 있을까요?
이제는 그냥 이론만 보지 말고 직접 쿼리를 작성해 보면서 감을 잡아야 합니다.

그래서 준비한 2가지 시나리오! 😎

🧓 회원 테이블에서 생년월일 가공하기

가상의 members 테이블에 다음과 같은 데이터가 있다고 가정해봅시다.

id name birth_date
1 김민수 1994-03-21
2 이수지 1987-07-08

우리는 여기서 두 가지 작업을 할 거예요:

  1. 생년월일을 'YYYY년 MM월 DD일' 형식으로 변환
  2. 오늘 기준 나이 계산

아래 쿼리를 보세요:

SELECT
  name,
  DATE_FORMAT(birth_date, '%Y년 %m월 %d일') AS formatted_birth,
  YEAR(CURDATE()) - YEAR(birth_date) AS age
FROM
  members;

단 두 줄의 함수로 날짜 형식도 바꾸고 나이도 계산했죠?

이게 바로 SQL 내장함수의 파워입니다! 💪

🛍️ 상품명 + 가격 문자열 만들기

이번엔 products 테이블에서 상품명과 가격을 한 줄로 묶어서 출력해보겠습니다.
고객에게 ‘상품명 (가격원)’ 형태로 보여주기 위한 가공이죠!

SELECT
  CONCAT(product_name, ' (', FORMAT(price, 0), '원)') AS product_info
FROM
  products;

CONCATFORMAT 조합만으로 상품 정보가 확! 깔끔해지죠?

실무에서 이런 식으로 텍스트 조합은 진짜 많이 씁니다!

✅ 실전 포인트 요약

  • DATE_FORMAT()으로 날짜 가독성 향상
  • YEAR(CURDATE()) - YEAR(생년) 방식으로 간단한 나이 계산
  • CONCAT() + FORMAT()으로 상품 정보 포맷화

이제 내장함수들이 실무에서 얼마나 강력한 무기인지 실감나시죠?

 

6. 마무리 요약 및 실무 적용 팁 🎯

여기까지 따라오셨다면 이제 SQL 내장 함수에 대한 기본기를 완벽히 다지셨다고 자신 있게 말씀드릴 수 있어요!

단순히 SELECT만 쓰던 시절을 지나, 이제는 문자열·숫자·날짜 데이터를 자유롭게 가공할 수 있는 실력을 갖추게 된 거죠.

📌 핵심 요약 정리

  • 문자열 함수: CONCAT, LENGTH, SUBSTRING, REPLACE
  • 날짜 함수: NOW, DATE_FORMAT, DATE_ADD
  • 숫자 함수: ROUND, CEIL, FLOOR, ABS

💼 실무 적용 팁

  • 보고서 출력용 데이터 만들 땐 CONCAT() + FORMAT() 조합이 최고!
  • 날짜 조건 검색 시 NOW()DATE_ADD()를 조합해 범위 지정
  • 숫자 계산 후 소수점 자리 제어 시 ROUND(), CEIL(), FLOOR() 필수!

 

이 글을 통해 여러분이 데이터베이스 내장 함수를 자유자재로 활용할 수 있게 되었다면,

그보다 더 뿌듯할 수 없겠네요 😊

 

 

반응형

+ Recent posts