2과목. SQL 기본 및 활용
1장. SQL 기본
3절. 함수
# 함수 정의
- input value가 있을 경우 그에 맞는 output value 를 출력해주는 객체
- input value와 output value의 관계를 정의한 객체
- from 절을 제외한 모든 절에서 사용 가능
# 함수 기능
- 기본적인 쿼리문을 더욱 강력하게 해줌
- 데이터의 계산을 수행
- 개별 데이터의 항목을 수정
- 표시할 날짜 및 숫자 형식 지정
- 열 데이터의 유형을 변환
# 함수의 종류(입력값의 수에 따라)
- 단일행 함수와 복수행 함수로 구분
- 단일행 함수: input과 output의 관계가 1:1(하나의 input이 들어가서 하나의 output이 나옴)
- 복수행 함수: 여러 건의 데이터를 동시에 입력 받아서 하나의 요약값을 리턴(그룹함수 또는 집계함수라고도 함)
# 입/출력값의 타입에 따른 함수 분류
① 문자형 함수
- 문자열 결합, 추출, 삭제 등을 수행
- 단일행 함수 형태
- output은 대부분 문자값(LENGTH, INSTR 제외)
- 문자함수 종류
· LOWER(대상)
· UPPER(대상)
· SUBSTR(대상, m, n): 문자열 중 m 위치에서 n개의 문자열 추출
· LTRIM(대상, 삭제문자열): 문자열 중 특정 문자열을 왼쪽에서 삭제
· RTRIM(대상, 삭제문자열): 문자열 중 특정 문자열을 오른쪽에서 삭제
· TRIM(대상): 문자열 중 특정 문자열을 양쪽에서 삭제
· LPAD(대상, n, 문자열): 대상 왼쪽에 문자열을 추가하여 총 n의 길이 리턴
· RPAD(대상, n, 문자열): 대상 오른쪽에 문자열을 추가하여 총 n의 길이 리턴
· CONCAT(대상1, 대상2): 문자열 결합
· LENGTH(대상): 문자여려 길이
· REPLACE(대상, 찾을문자열, 바꿀문자열): 문자열 치환 및 삭제
· TRANSLATE(대상, 찾을문자열, 바꿀문자열): 글자를 1대1로 치환(매칭되는 글자끼리 치환)
* SQL-Server
· SUBSTR ➪ SUBSTRING
· LENGTH ➪ LEN
· INSTR ➪ CHARINDEX
② 숫자형 함수
- 숫자를 입력하면 숫자 값을 바환
- 단일행 함수 형태의 숫자 함수
- Oracle과 SQL-Server 함수 거의 동일함
- 숫자함수 종류
· ABS(숫자): 절대값 반환
· ROUND(숫자, 자리수): 소수점 특정 자리에서 반올림(자리수가 음수면 정수자리에서 반올림)
· TRUNC(숫자, 자리수): 소수점 특정 자리에서 버림(자리수가 음수면 정수자리에서 반올림)
· SIGN(숫자): 숫자가 양수면 1, 음수면 -1, 0이면 0 반환
· FLOOR(숫자): 작거나 같은 최대 정수 리턴
· CEIL(숫자): 크거나 같은 최소 정수 리턴
· MOD(숫자1, 숫자2):숫자 1을 숫자2로 나누어 나머지 반환
· POWER(m, n): m의 n 거듭제곱
· SQRT(숫자): 루트값 리턴
③ 날짜형 함수
- 날짜 연산과 관련된 함수
- Oracle과 SQL-Server 함수는 거의 다름
- 날짜함수 종류
· SYSDATE: 현재날짜와 시간 리턴
· CURRENT_DATE: 현재 날짜 리턴
· CURRENT_TIMESTAMP: 현재 타임스탬프 리턴
· ADD_MONTHS(날짜, n): 날짜에서 n개월 후 날짜 리턴
· LAST_DAY(날짜, n): 주어진 월의 마지막 날짜 리턴
· NEXT_DAY(날짜, n): 주어진 날짜 이후 지정된 요일의 첫번째 날짜 리턴
· ROUND(날짜, 자리수): 날짜 반올림
· TRUNC(날짜, 자리수): 날짜 버림
· MONTHS_BETWEEN(날짜1, 날짜2): 날짜1과 날짜2 사이의 개월 수 리턴
* SQL-Server
· SYSDATE ➪ GETDATE
· ADD_MONTHS ➪ DATEADD(월 뿐만 아니라 모든 단위 날짜 연산 가능)
· MONTHS_BETWEEN ➪ DATEDIFF(두 날짜 사이의 년, 월, 일 추출)
④ 변환함수
- 값의 데이터 타입을 변환
- 문자를 숫자로, 숫자를 문자로, 날짜를 문자로 변경
- 변환함수 종류
· TO_NUMBER(대상): 숫자 타입으로 변경하여 리턴
· TO_CHAR(대상, 포맷)
1) 날짜의 포맷 변경: 날짜 형식 변경(리턴은 문자타입)
2) 숫자의 포맷 변경: 천단위 구분기호 생성(리턴은 문자타입/총 5자리로 리턴(앞 자리수 0으로)
· TO_DATE(문자, 포맷): 주어진 문자를 포맷 형식에 맞게 읽어 날짜로 리턴
· CAST(대상 AS 데이터타입): 대상을 주어진 데이터타입으로 변환
* SQL-Server
· TO_NUMBER, TO_DATE, TO_CHAR ➪ CONVERT(포맷 전달 시)
· 단순 변환일 경우 주로 CAST 사용
⑤ 그룹함수
- 다중행 함수
- 여러 값이 input값으로 들어가서 하나의 요약된 값으로 리턴
- group by 와 함께 자주 사용됨
- Oracle 과 SQL-Server 거의 동일
- 그룹함수 종류(NULL 무시하고 연산)
· COUNT(대상): 행의 수 리턴
· SUM(대상): 총 합 리턴
· AVG(대상): 평균 리턴
· MIN(대상): 최솟값 리턴
· MAX(대상): 최댓값 리턴
· VARIANCE(대상): 분산 리턴
· STDDEV(대상): 표준편차 리턴
* SQL-Server
· VARIANCE ➪ VAR
· STDDEV ➪ STDEV
⑥ 일반함수
- 기타함수(널 치환 함수 등)
- 일반(기타)함수 종류
· DECODE(대상, 값1, 리턴1, 값2, 리턴2, …, 그외리턴): 대상이 값1이면 리턴1, 값2와 같으면 리턴2, … 그외에는 그외 리턴값 리턴
· NVL(대상, 치환값): 대상이 널이면 치환값으로 치환하여 리턴
· NVL2(대상, 치환값1,치환값2): 대상이 널이면 치환값2로 치환, 널이 아니면 치환값1로 치환하여 리턴
· COALESCE(대상1, 대상2, …, 그외리턴): 대상1이 널이면 대상2이 리턴, 대상2가 널이면 대상3이 리턴, …, 모두가 널이면 그외리턴값이 리턴
· CASE문: 조건별 치환 및 연산 수행
'🖊️Certificate > 📌SQLD' 카테고리의 다른 글
[SQLD] 2과목 - 1장) 5/ 6절. GROUP BY, HAVING 절/ ORDER BY 절 (0) | 2024.03.07 |
---|---|
[SQLD] 2과목 - 1장) 4절. WHERE 절 (0) | 2024.03.07 |
[SQLD] 2과목 - 1장) 2절. SELECT 문 (0) | 2024.03.06 |
[SQLD] 2과목 - 1장) 1절. 관계형 데이터베이스 개요 (0) | 2024.03.06 |
[SQLD] 1과목 - 2장) 5절. 본질식별자 vs 인조식별자 (0) | 2024.03.06 |
댓글