내장 함수란?
- 사용자가 직접 정의하지 않고 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 처리
- SUM, AVG 등 수치 연산 함수는 NULL 값을 제외하고 계산됨
- 예시 테이블에서 price 열에 NULL이 있는 경우, SUM(price)는 NULL 제외 후 합산됨.
- COUNT 함수는 NULL 처리에 주의
- COUNT(열)은 NULL을 제외하고 개수 세고,
- COUNT(*)는 NULL 포함 모든 행의 개수를 셈.
- 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 |