수민

[호붕싸 모각코 10차] SQL 고급: 내장 함수 정리

뽑삥 2025. 5. 9. 21:57

내장 함수란?

- 사용자가 직접 정의하지 않고 DBMS에서 기본적으로 제공하는 함수

- 주로 SELECT 문에서 사용됨

- 결과는 항상 "스칼라(단일 값)"으로 반환되어야 함.

 

숫자 함수

ABS(n) 절댓값 반환 ABS(-6) → 6
ROUND(n, m) n을 소수점 m자리까지 반올림 ROUND(3.14159, 2) → 3.14
FLOOR(n) n보다 작거나 같은 가장 큰 정수 (내림) FLOOR(4.9) → 4
CEIL(n) n보다 크거나 같은 가장 작은 정수 (올림) CEIL(4.1) → 5
LOG(n) n의 자연로그 (밑 e) LOG(2.72035) → 1
POWER(n, m) n의 m승 반환 (거듭제곱) POWER(4, 2) → 16
SQRT(n) n의 제곱근 반환 SQRT(16) → 4
SIGN(n) 양수/음수/0 여부 판단 (n > 0 → 1 / n < 0 → -1 / n = 0 → 0) SIGN(-99.579) → -1

 

문자 함수

REPLACE(s1, s2, s3) 문자열 s1에서 s2를 찾아 s3으로 변경 REPLACE('butter', 't', 'X') → "buxxer"
LENGTH(s) 문자열 s의 길이 반환 (공백 포함) LENGTH('apple') → 5
SUBSTR(s, n, m) 문자열 s의 n번째 문자부터 m개 반환 (부분 문자열 추출) SUBSTR('abcdefg', 2, 4) → "bcde"
CHR(n) 아스키 코드 n에 해당하는 문자 반환 CHR(68) → "D"
ASCII(c) 문자 c의 아스키 코드값 반환 ASCII('D') → 68
INITCAP(s) 각 단어의 첫 글자만 대문자로 변환 (이니셜 대문자화) INITCAP('the song') → "The Song"
LOWER(s) 모두 소문자로 변환 LOWER('Mr.SCOTT') → "mr.scott"
UPPER(s) 모두 대문자로 변환 UPPER('mr.scott') → "MR.SCOTT"
LPAD(s, n, c) 문자열 s를 왼쪽에서부터 문자 c로 채워 총 길이 n이 되도록 함 LPAD('abc', 6, '#') → "###abc"
RPAD(s, n, c) 문자열 s를 오른쪽에서부터 문자 c로 채워 총 길이 n이 되도록 함 RPAD('abc', 6, '*') → "abc***"
LTRIM(s, c) 문자열 s의 왼쪽에서부터 문자 c를 제거 LTRIM('***BROWNING', '*') → "BROWNING"
RTRIM(s, c) 문자열 s의 오른쪽에서부터 문자 c를 제거 RTRIM('BROWNING***', '*') → "BROWNING"
TRIM(c FROM s) 문자열 s 양쪽 끝에서 문자 c를 제거 TRIM('*' FROM '*BROWNING*') → "BROWNING"
INSTR(s1, s2, n, m) s1에서 s2가 처음 등장하는 위치 반환 (n번째 위치부터, m번째 발생 찾기) INSTR('CHOCOLATE FROG', 'O', 1, 2) → 7

 

 

날짜 함수

- TO_DATE(char, datetime)

  • 문자열(char)을 날짜 형식(datetime)으로 변환.
  • 날짜 데이터를 정확하게 처리하기 위해 사용.
  • 예시: TO_DATE('2024-01-01', 'yyyy-mm-dd')

- TO_CHAR(date, datetime)

  • 날짜 데이터를 문자열 형식으로 변환.
  • 출력 형식을 지정할 수 있음.
  • 예시: TO_CHAR(SYSDATE, 'yyyy/mm/dd')

-  ADD_MONTHS(date, n)

  • 지정된 날짜에 n개월을 더함.
  • 음수를 넣으면 개월 수만큼 뺌.
  • 예시: ADD_MONTHS(TO_DATE('2024-01-01', 'yyyy-mm-dd'), 3)

- LAST_DAY(date)

  • 주어진 날짜가 속한 달의 마지막 날짜를 반환.
  • 예시: LAST_DAY(TO_DATE('2014-01-01', 'yyyy-mm-dd')) → 2014-01-31

- SYSDATE

  • 현재 시스템 날짜와 시간을 반환.
  • TO_CHAR와 함께 사용하여 형식을 지정 가능.
  • 예시: TO_CHAR(SYSDATE, 'yyyy/mm/dd')

- SYSTIMESTAMP

  • 날짜뿐 아니라 시간, 시간대 정보까지 포함된 현재 시각을 반환.
  • 예시: 2024-05-06 11:49:54.123456 +09:00

 

NULL 값 처리

→ SQL에서 NULL은 “값이 없다”는 의미로, 0이나 공백("")과는 다름. UNKNOWN 또는 NOT EXIST라고 해석 가능.

- NULL + 숫자 = NULL

  • 숫자 연산 시 하나라도 NULL이 포함되면 결과는 NULL.

- 집계 함수에서의 NULL 처리

  1. SUM, AVG 등 수치 연산 함수는 NULL 값을 제외하고 계산됨
    • 예시 테이블에서 price 열에 NULL이 있는 경우, SUM(price)는 NULL 제외 후 합산됨.
  2. COUNT 함수는 NULL 처리에 주의
    • COUNT(열)은 NULL을 제외하고 개수 세고,
    • COUNT(*)는 NULL 포함 모든 행의 개수를 셈.
  3. WHERE 조건에 해당하는 행이 없을 경우
    • SUM, AVG: 결과는 NULL
    • COUNT: 결과는 0

- NULL 판별 조건

  • IS NULL, IS NOT NULL 사용.
  • = NULL, != NULL 등은 사용 불가 (잘못된 표현).

 

ROWNUM (순번 함수)

  • 결과에서 내부적으로 생성되는 가상 컬럼.
  • SQL 쿼리 결과의 순서에 따라 1부터 자동 번호 부여.
  • 정렬 후 순번을 매기려면 서브쿼리 또는 CTE를 이용해야 함.
  • 정렬 전의 순서를 기준으로 번호가 매겨지기 때문에 주의 필요.

 

 

작성자 신수민
소 감 SELECT 절에서 스칼라로 값을 반환한다는 것은 이 절에서 많은 것들을 필터링하는 것이라는 걸로 알았다. DB 설계 시 SELECT절에서의 필터링이 정말 중요할 것 같다고 깨닫았고, 이를 이용해 효율적으로 관리해야겠다는 생각이 들었다.
일 시 2025. 5. 9. (금) 18:00 ~ 21:00
장 소 미래관 429호 자율주행스튜디오
참가자 명단 신수민, 임혜진, 배세은, 김윤희 (총 4명)
사 진  

 

 


'수민' 카테고리의 다른 글

[호붕싸 모각코 11차] 서브쿼리와 View  (0) 2025.05.16
[호붕싸 모각코 9차]  (0) 2025.05.02
[호붕싸 모각코 8차]  (0) 2025.04.11
[호붕싸 모각코 7차]  (0) 2025.04.04
[호붕싸 모각코 6차]  (0) 2025.03.31