[MySQL] 내장 함수

Bam·2025년 4월 20일
0

Database

목록 보기
22/39
post-thumbnail

MySQL 내장 함수

MySQL에서는 특정 데이터를 입력받아 결과를 출력하는 내장 함수를 제공하고 있습니다.

내장 함수는 SELECT, INSERT, UPDATE, DELETE, WHERE, ORDER BY, FROUP BY, CREATE TABLE, JOIN ON과 같은 SQL 구문에서 사용될 수 있습니다.

RDBMS에서 기본으로 제공되는 내장 함수도 있지만, 프로그래머가 직접 작성해서 정의하는 사용자 정의 함수 기능도 존재하고 있습니다. 이에 대해서는 추후에 별개의 포스트로 소개하겠습니다.

MySQL 문서에서 확인해보시면 엄청 많은 숫자의 내장 함수(연산자와 같이 나와있음)를 제공하고 있음을 알 수 있는데요. 이 포스트에선 사용빈도가 높다고 여겨지는 몇 가지 대표적인 내장 함수들을 분류별로 알아보도록 하겠습니다.


집계 함수

집계 함수(Aggregate Function)은 테이블 내의 레코드에 대한 집계(계산)을 수행하여 결과 값을 반환합니다. 연산자 등으로 구현이 가능하지만 자주 쓰이는 집계와 관련된 기능들을 모아 함수로 만들어 놓은 특별한 내장 함수라고 할 수 있습니다.

함수명설명
COUNT(조건)조건에 맞는 행의 개수 반환
SUM(컬럼)특정 컬럼 값들에 대한 총합 반환
AVG(컬럼)특정 컬럼 값에 대한 산술 평균 반환
MAX(컬럼)특정 컬럼의 최댓값 반환
MIN(컬럼)특정 컬럼의 최솟값 반환

수학 내장 함수

수학 기능 내장 함수의 인자로는 숫자 데이터만 올 수 있습니다. 만약 숫자 외의 데이터가 입력되면 오류를 발생시킵니다.

함수명설명
ABS(수)절댓값 반환
CEIL(수)숫자보다 크거나 같은 정수 반환
FLOOR(수)숫자보다 작거나 같은 정수 반환
ROUND(수, m)반올림 값 반환. m은 반올림할 자릿수
LOG(수)자연로그 값 반환
POWER(수, n)n제곱 값 반환
SQRT(수)제곱근 값 반환
SIGN(수)음수는 -1, 0은 0, 양수는 1 반환

문자, 문자열 내장 함수

함수명설명
CONCAT(str1, str2)str1 뒤에 str2를 연결
REPLACE(str1, str2, str3)str1의 str2를 찾아서 str3로 모두 변경
LPAD(str, n, c)str의 왼쪽부터 n자리까지 c로 치환
RPAD(str, n, c)str의 오른쪽부터 n자리까지 c로 치환
SUBSTR(str, n, k)str의 n번째 자리부터 k번째 자리부터 잘라낸 문자열 반환
TRIM(c FROM str)str에서 문자 c 삭제. TRIM(str)은 공백 제거
UPPER(str)str을 대문자로 치환
LOWER(str)str을 소문자로 치환
ASCII(c)문자 c의 아스키 코드값 반환
LENGTH(str)str의 Byte 수 반환
CHAR_LENGTH(str)str의 문자 개수 반환

날짜와 시간 내장 함수

함수명설명
STR_TO_DATE(str, format)str을 Date타입으로 반환. 이때 format에 맞춰서 반환.
DATE_FORMAT(date, format)Date를 문자열로 반환. 이때 format에 맞춰서 반환.
ADDDATE(date, interval)DATE 타입 데이터에서 지정한 INTERVAL 만큼 반환.
DATE(date)date의 날짜 부분만 반환
DATEDIFF(date1, date2)date1 - date2의 날짜 차이 반환
SYSDATE()시스템의 현재 시각 반환

추가설명
ADDDATE('2025-04-20', INTERVAL 7 DAY)의 결과는 '2025-04-27'

날짜와 시간 포맷 지정자

날짜와 시간 데이터를 다룰때 출력 형식을 지정하는 포맷 지정자를 사용하는 경우가 많습니다. 기존 프로그래밍 언어에서 사용하던 날짜/시간 포맷 지정자에서 %만 붙이면 되긴 하는데요. 그래도 정리해보겠습니다.

날짜 지정자설명시간 지정자설명
%Y연도 4자리%H시간 (24시간제)
%y연도 마지막 2자리%h시간 (12시간제)
%M월 이름%i
%m월 숫자 표기%s
%b월 이름 약어
%j1년 중 날짜
%d1달 중 날짜
%a요일의 약어
%W요일
%w요일 숫자 표기
  • 1년 중 날짜: 001 ~ 366
  • 1달 중 날짜: 00 ~ 31
  • 요일 숫자 표기: 0 ~ 6 (일요일부터 0)

NULL 처리 내장 함수

함수명설명
IFNULL(data1, data2)data1의 값이 NULL이면 data2의 값으로 치환

NULL 처리 연산자

NULL값이 데이터로 들어오는 경우 많은 문제를 야기하는 원인이 되기 때문에 주의해야합니다.

  • NULL에 대한 산술 연산 결과는 NULL
  • 집계 함수 사용 시 결과에 NULL은 포함되지 않고 집계
  • SUM(), AVG() 사용시 조건에 맞는 행이 없을 경우 결과가 NULL. 단, COUNT()는 0.

NULL을 찾을때는 = 연산자 대신 IS NULL, NULL이 아닌 값을 찾을 때는 IS NOT NULL 연산자를 사용하여 NULL값을 비교합니다.

0개의 댓글