반응형
안녕하세요! 😄 SQLD(SQL 개발자 자격증) 시험을 준비하면서 꼭 알아야 하는 SQL 함수들을 정리해보았습니다.
SQL 함수는 실제 시험에서 직접 사용 예시나 결과값을 묻는 문제가 자주 나오기 때문에, 정리하고 외우고 실습까지 해야 합니다. SQL 함수들을 체계적으로 정리하도록 하겠습니다 :)
📌 SQL 함수란?
SQL 함수는 입력값을 받아서 계산된 값을 반환하는 기능입니다.
크게 아래 두 가지로 나뉘어요
✅ 단일 행 함수 | 한 행마다 1개의 결과를 반환 (문자, 숫자, 날짜 등) |
✅ 그룹 함수 | 여러 행을 묶어 하나의 결과를 반환 (SUM, COUNT 등) |
🟦 문자열 함수 (Character Function)
문자열 함수는 텍스트 데이터를 다룰 때 사용하는 함수입니다.
✅ LOWER(string)
문자열을 모두 소문자로 변환합니다.
SELECT LOWER('SQLD Exam') FROM DUAL;
-- 결과: 'sqld exam'
- 대소문자 민감한 조건 비교 전에 LOWER() 또는 UPPER()로 통일해서 비교하는 데 유용합니다.
✅ UPPER(string)
문자열을 모두 대문자로 변환합니다.
SELECT UPPER('sql developer') FROM DUAL;
-- 결과: 'SQL DEVELOPER'
✅ LENGTH(string)
문자열의 길이(문자 수)를 반환합니다.
SELECT LENGTH('오라클') FROM DUAL;
-- 결과: 3 (한글도 1자씩 계산됨)
✅ SUBSTR(string, start, length)
문자열의 특정 위치에서 시작하여 일정 길이만큼 잘라냅니다.
SELECT SUBSTR('ORACLEDB', 2, 4) FROM DUAL;
-- 결과: 'RACL'
- start는 1부터 시작, 음수일 경우 뒤에서부터 시작합니다.
- length는 생략하면 끝까지 추출됩니다.
✅ INSTR(string, substring)
특정 문자열이 처음 등장하는 위치를 반환합니다.
SELECT INSTR('DATABASE', 'A') FROM DUAL;
-- 결과: 2 (맨 앞에서부터 찾음)
✅ TRIM(['char' FROM] string)
문자열 앞뒤의 특정 문자를 제거합니다. 기본은 공백 제거.
SELECT TRIM(' Hello ') FROM DUAL;
-- 결과: 'Hello'
SELECT TRIM('0' FROM '000123000') FROM DUAL;
-- 결과: '123'
✅ LPAD(string, total_length, pad_char)
문자열 왼쪽에 특정 문자를 채워 길이를 맞춥니다.
SELECT LPAD('123', 5, '0') FROM DUAL;
-- 결과: '00123'
✅ RPAD(string, total_length, pad_char)
문자열 오른쪽에 문자를 채워 길이를 맞춥니다.
SELECT RPAD('A', 4, '*') FROM DUAL;
-- 결과: 'A***'
✅ REPLACE(string, old, new)
문자열에서 특정 문자 또는 단어를 다른 것으로 바꿉니다.
SELECT REPLACE('abcabc', 'a', 'X') FROM DUAL;
-- 결과: 'XbcXbc'
🟨 숫자 함수 (Number/Math Functions)
숫자 데이터를 다룰 때 사용되는 함수입니다.
✅ ABS(n)
절댓값을 반환합니다.
SELECT ABS(-10) FROM DUAL;
-- 결과: 10
✅ CEIL(n)
소수점이 존재하면 올림합니다.
SELECT CEIL(3.01) FROM DUAL;
-- 결과: 4
✅ FLOOR(n)
소수점이 존재하면 **버림(내림)**합니다.
SELECT FLOOR(3.99) FROM DUAL;
-- 결과: 3
✅ ROUND(n, d)
지정한 소수점 자릿수까지 반올림합니다.
SELECT ROUND(123.4567, 2) FROM DUAL;
-- 결과: 123.46
✅ TRUNC(n, d)
지정한 자릿수까지 버림합니다.
SELECT TRUNC(123.4567, 2) FROM DUAL;
-- 결과: 123.45
✅ MOD(m, n)
m을 n으로 나눈 나머지를 반환합니다.
SELECT MOD(10, 3) FROM DUAL;
-- 결과: 1
✅ POWER(x, y)
x의 y제곱을 반환합니다.
SELECT POWER(2, 3) FROM DUAL;
-- 결과: 8
🟩 날짜 함수 (Date Functions)
날짜와 시간 관련 데이터를 처리하는 데 사용하는 함수입니다.
✅ SYSDATE
현재 시스템의 날짜와 시간 반환
SELECT SYSDATE FROM DUAL;
✅ ADD_MONTHS(date, n)
지정한 날짜에 n개월을 더한 날짜 반환
SELECT ADD_MONTHS(SYSDATE, 3) FROM DUAL;
✅ MONTHS_BETWEEN(d1, d2)
두 날짜 간의 개월 수 차이 계산
SELECT MONTHS_BETWEEN('2025-05-01', '2025-01-01') FROM DUAL;
-- 결과: 4
✅ LAST_DAY(date)
해당 월의 마지막 날짜 반환
SELECT LAST_DAY(SYSDATE) FROM DUAL;
✅ NEXT_DAY(date, '요일')
해당 요일의 다음 날짜 반환
SELECT NEXT_DAY(SYSDATE, 'MONDAY') FROM DUAL;
✅ TRUNC(date, 'fmt')
날짜의 특정 단위를 기준으로 자름
SELECT TRUNC(SYSDATE, 'MM') FROM DUAL;
-- 결과: 이번달 1일
🟪 변환 함수 (Conversion Functions)
데이터 타입을 서로 변환할 수 있는 함수입니다.
✅ TO_CHAR(date/number, 'format')
날짜 또는 숫자를 문자로 변환
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
✅ TO_DATE(string, 'format')
문자열을 날짜로 변환
SELECT TO_DATE('2025-01-01', 'YYYY-MM-DD') FROM DUAL;
✅ TO_NUMBER(string)
문자열을 숫자로 변환
SELECT TO_NUMBER('1000') + 500 FROM DUAL;
-- 결과: 1500
✅ CAST(expression AS TYPE)
표현식을 원하는 타입으로 변환
SELECT CAST('123' AS NUMBER) + 10 FROM DUAL;
-- 결과: 133
🟥 조건 함수
✅ DECODE(column, value1, result1, value2, result2, ..., default)
일종의 IF문처럼 작동하며, 조건값과 비교해 결과 반환
SELECT DECODE(GENDER, 'M', '남자', 'F', '여자', '기타') FROM USERS;
✅ CASE WHEN THEN ELSE END
보다 유연한 조건 분기 처리가 가능한 함수
SELECT
CASE
WHEN SCORE >= 90 THEN 'A'
WHEN SCORE >= 80 THEN 'B'
ELSE 'F'
END AS GRADE
FROM STUDENT;
🟧 그룹 함수 (집계 함수)
여러 행을 집계하여 하나의 결과를 만듭니다. GROUP BY, HAVING절과 함께 자주 쓰임.
SUM() | 총합 계산 |
AVG() | 평균 계산 |
COUNT() | 행 수 계산 |
MAX() | 최댓값 |
MIN() | 최솟값 |
SELECT DEPT_ID, COUNT(*) AS 인원수
FROM EMPLOYEES
GROUP BY DEPT_ID;
🟧 정리
함수 종류 | 함수명 | 설명 | 예시 |
---|---|---|---|
문자열 | LOWER(str) | 소문자로 변환 | LOWER('ABC') → 'abc' |
문자열 | UPPER(str) | 대문자로 변환 | UPPER('abc') → 'ABC' |
문자열 | LENGTH(str) | 문자열 길이 | LENGTH('SQLD') → 4 |
문자열 | SUBSTR(str, m, n) | 문자 추출 | SUBSTR('ORACLE', 2, 3) → 'RAC' |
문자열 | INSTR(str, find) | 문자 위치 | INSTR('ORACLE', 'A') → 3 |
문자열 | TRIM(char FROM str) | 앞뒤 문자 제거 | TRIM('0' FROM '00100') → '1' |
문자열 | LPAD(str, n, pad) | 왼쪽 채움 | LPAD('12', 5, '0') → '00012' |
문자열 | RPAD(str, n, pad) | 오른쪽 채움 | RPAD('A', 3, '-') → 'A--' |
문자열 | REPLACE(str, a, b) | 문자열 치환 | REPLACE('AABB', 'B', 'C') → 'AACC' |
숫자 | ABS(n) | 절댓값 | ABS(-3) → 3 |
숫자 | CEIL(n) | 올림 | CEIL(2.1) → 3 |
숫자 | FLOOR(n) | 내림 | FLOOR(2.9) → 2 |
숫자 | ROUND(n, d) | 반올림 | ROUND(3.456, 2) → 3.46 |
숫자 | TRUNC(n, d) | 버림 | TRUNC(3.456, 2) → 3.45 |
숫자 | MOD(m, n) | 나머지 | MOD(10, 3) → 1 |
숫자 | POWER(x, y) | 제곱 | POWER(2, 3) → 8 |
날짜 | SYSDATE | 현재 날짜 | SYSDATE |
날짜 | ADD_MONTHS(d, n) | n개월 후 | ADD_MONTHS(SYSDATE, 1) |
날짜 | MONTHS_BETWEEN(d1, d2) | 개월 차이 | MONTHS_BETWEEN('2025-05-01', '2025-01-01') |
날짜 | LAST_DAY(date) | 월 말일 | LAST_DAY(SYSDATE) |
날짜 | NEXT_DAY(date, 요일) | 다음 요일 | NEXT_DAY(SYSDATE, 'MONDAY') |
날짜 | TRUNC(date, fmt) | 날짜 자르기 | TRUNC(SYSDATE, 'MM') |
변환 | TO_CHAR(date, fmt) | 날짜 → 문자 | TO_CHAR(SYSDATE, 'YYYY-MM-DD') |
변환 | TO_DATE(str, fmt) | 문자 → 날짜 | TO_DATE('2025-01-01', 'YYYY-MM-DD') |
변환 | TO_NUMBER(str) | 문자 → 숫자 | TO_NUMBER('100') |
변환 | CAST(expr AS type) | 형 변환 | CAST('123' AS NUMBER) |
조건 | DECODE(col, val, res) | 조건 분기 | DECODE(GENDER, 'M', '남') |
조건 | CASE WHEN THEN | 조건 분기 | CASE WHEN 점수 ≥ 90 THEN 'A' |
집계 | SUM(expr) | 합계 | SUM(SALARY) |
집계 | AVG(expr) | 평균 | AVG(SALARY) |
집계 | MAX(expr) | 최댓값 | MAX(HIRE_DATE) |
집계 | MIN(expr) | 최솟값 | MIN(SALARY) |
집계 | COUNT(*) | 행 수 | COUNT(*) |
반응형
'자격증 > SQLD' 카테고리의 다른 글
🎯 SQLD 자격증 완벽 정리 — WHERE 절 완전 정복! (0) | 2025.05.06 |
---|---|
📊 SQLD 자격증 완벽 대비 — SELECT 절의 모든 것 (0) | 2025.05.06 |
SQLD 요약정리 (1) (1) | 2024.07.03 |
[SQL] 변환함수, NULL 관련함수, CASE (0) | 2024.06.28 |
[SQL]문자함수, 숫자함수, 날짜함수 (0) | 2024.06.28 |