SQL에서는 함수의 개념을 사용하는데 수학의 함수와 마찬가지로 특정 값이나
열의 값을 입력받아 그 값을 계산하여 결과 값을 돌려줌
SQL의 함수는 DBMS가 제공하는 내장함수와
사용자가 필요에 따라 직접 만드는 사용자 정의 함수로 나뉨
SQL 내장함수
SQL 내장 함수는 상수나 속성 이름을 입력 값으로 받아 단일 값을 결과로 변환함
모든 내장 함수는 최초에 선언될 때 유효한 입력 값을 받아야 함.
1. 숫자 함수
1. ABS 함수: 절댓값을 구하는 함수
예제) -78과 +78의 절댓값을 구하시오
2. ROUND 함수: 반올림한 값을 구하는 함수
예제) 4.875를 소수 첫째 자리까지 반올림한 값을 구하시오.
3. 숫자 함수의 연산
예제) 고객별 평균 주문 금액을 백원 단위로 반올림한 값을 구하시오.
2. 문자함수
1. REPLACE: 문자열을 치환하는 함수
예제) 도서 제목에 야구가 포함된 도서를 농구로 변경한 후 도서 목록을 보이시오.
2. LENGTH: 글자의 수를 세어주는 함수(단위가 바이트가 아닌 문자 단위)
예제) 굿스포츠에서 출판한 도서의 제목과 제목의 글자 수를 확인하시오.
3. SUBSTR: 지정한 길이만큼의 문자열을 반환하는 함수
예제) 마당서점의 고객 중에서 같은 성을 가진 사람이 몇 명이나 되는지 성별 인원수를 구하시오.
3. 날짜, 시간 함수
예제) 마당서점은 주문일로부터 10일 후 매출을 확정한다. 각 주문의 확정일자를 구하시오.
TO_DATE: 문자형으로 저장된 날짜를 날짜형으로 변환하는 함수
TO_CHAR: 날짜형을 문자형으로 변환하는 함수
예제) 마당서점이 2020년 7월 7일에 주문받은 도서의 주문번호, 주문일, 고객번호, 도서번호를 모두 보이시오.
단 주문일은 'yyyy-mm-dd 요일' 형태로 표시
SYSDATETIME: 오라클의 현재 날짜와 시간을 반환하는 함수
SYSTIMESTAMP: 현재 날짜, 시간과 함께 초 이하의 시간과 서버의 TIMEZONE까지 출력함
예제) DBMS 서버에 설정된 현재 시간과 오늘 날짜를 확인하시오.
NULL값 처리
NULL 값이란?
- 아직 지정되지 않은 값
- NULL 값은 '0', ‘’( 빈 문자 ), ‘ ’ (공백 ) 등과 다른 특별한 값
- NULL값은 비교 연산자로 비교가 불가능함
- NULL값의 연산을 수행하면 결과 역시 NULL값으로 반환됨
집계함수를 사용할 때 주의할 점
- 'NULL+숫자' 연산의 결과는 NULL
- 집계 함수 계산 시 NULL이 포함된 행은 집계에서 빠짐
- 해당되는 행이 하나도 없을 경우 SUM, AVG 함수의 결과는 NULL이 되며, COUNT 함수의 결과는 0
NULL값을 확인하는 방법(IS NULL, IS NOT NULL)
- NULL값을 찾을 때는 = 연산자가 아닌 IS NULL을 사용
- NULL이 아닌 값을 찾을 때는 <> 연산자가 아닌 IS NOT NULL을 사용함
NVL
NULL값을 다른 값으로 대치하여 연산하거나 다른 값으로 출력
NVL(속성, 값) >> 속성 값이 NULL이면 '값'으로 대치한다.
예제) 이름, 전화번호가 포함된 고객 목록을 보이시오. 단, 전화번호가 없는 고객은 '연락처없음'으로 표시한다.
ROWNUM
오라클에서 내부적으로 생성되는 가상 컬럼으로 SQL 조회 결과의 순번을 나타냄
자료를 일부분만 확인하여 처리할 때 유용함
예제) 고객 목록에서 고객번호, 이름, 전화번호를 앞의 두명만 보이시오.
'Database' 카테고리의 다른 글
[Database] 데이터 모델링 (0) | 2023.05.31 |
---|---|
[Database] 키와 무결성 제약 조건 (0) | 2023.04.10 |
[Database] 정규화(Normalization) (0) | 2023.02.27 |
[D/B] 관계 대수 (0) | 2022.10.31 |
[Database] 관계 데이터 모델의 개념 (0) | 2022.10.24 |