1. 함수
(여기선 vender에서 제공하는 함수인 내장 함수에 대해)
내장 함수는 아래와 같이 나뉨
- 단일행 함수
- 다중행 함수
- 집계 함수
- 그룹 함수
- 윈도우 함수
함수는 입력값이 아무리 많아도 출력은 하나만 된다는 특징 가짐.
=> M:1 관계
종류 | 내용 | 함수의 예 |
문자형 함수 | 문자 입력 시 문자나 숫자 값 반환 | LOWER , UPPER , SUBSTR /SUBSTRING , LENGTH /LEN , LTRIM , RTRIM , TRIM ,ASCII |
숫자형 함수 | 숫자 입력 시 숫자 값 반환 | ABS , MOD , ROUND /TRUNC , SIGN /CHR /CHAR , CEIL /CEILING ,FLOOR , EXP , LOG , LN , POWER ,SIN , COS , TAN |
날짜형 함수 | DATE 타입의 값반환 | SYSDATE /GETDATE , EXTRACT /DATEPART , TO_NUMBER(TO_CHAR(d,'YYYY'|'MM'|'DD')) /YEAR|MONTH|DAY |
반환형 함수 | 문자, 숫자, 날짜형 값의 데이터 타입 변환 | TO_NUMBER , TO_CHAR , TO_DATE /CAST , CONVERT |
NULL 관련함수 | NULL 을처리하기 위한 함수 | NVL /ISNULL , NULLIF , COALESCE , SIGN /CHR |
단일행 함수의 중요한 특징
SELECT
,WHERE
,ORDER BY
절에 사용 가능함.- 각 row들에 대해 개별적으로 작용하여 데이터 값들 조작하고,
각각의 row에 대한 조작 결과를 리턴함. - 여러 인자argument를 입력해도
단 하나의 결과만 리턴함. - 함수의 인자로 상수, 변수, 표현식 사용 가능함.
- 하나의 인수 가질 수도, 여러 개의 인수를 가질 수도 있음.
- 특별한 경우 아니면,
함수의 인자로 함수 사용하는 함수의 중첩이 가능함.
2. 문자형 함수
문자형 함수 | 함수 설명 |
LOWER(문자열) | 문자열의 알파벳 -> 소문자 |
UPPER(문자열) | 문자열의 알파벳 -> 대문자 |
ASCII(문자) | 문자나 숫자 -> ASCII 코드 번호 |
CHR /CHAR(ASCII번호) | ASCII 코드 번호 -> 문자나 숫자 |
CONCAT (문자열1, 문자열2) | |
SUBSTR /SUBSTRING (문자열, m[, n ]) | 문자열 중 위치 m 에서n 개의 문자 길이에 해당하는 문자 반환.n 생략 시 마지막까지. |
LENGTH /LEN(문자열) | 문자열 개수를 숫자값으로 반환 |
LTRIM (문자열 [, 지정문자) | 지정 문자 있을 시 해당 문자 제거 (생략 시, 공백 값이 디폴트) (Server에선 공백만 제거가능) |
RTRIM (문자열 [, 지정문자) | 문자열 마지막 문자부터 시작 |
TRIM ([leading|trailing|both] 지정문자 FROM 문자열) | 머리말, 꼬리말 또는 양쪽의 지정 문자 제거 (Server에선 공백만 제거가능) |
1
2
SELECT LENGTH('THIS IS SQL')
FROM DUAL;
cf) DUAL
테이블의 특성
- 사용자
SYS
가 소유함. 모든 사용자가 액세스 가능. SELECT ~ FROM ~
의 형식을 갖추기 위한 일종의DUMMY
테이블.DUMMY
라는 문자열 유형 column에'X'
라는 값 있는 row를 1건 포함함.
1
SELECT LENGTH('THIS IS SQL') AS ColumnLength;
3. 숫자형 함수
문자형 함수 | 함수 설명 |
ABS(숫자) | 절댓값 반환 |
SIGN(숫자) | |
MOD(숫자1, 숫자2) | |
CEIL /CEILING(숫자) | |
FLOOR(숫자, [, m ]) | |
SIN , COS , TAN | |
EXP() , POWER() , SQRT() , LOG() |
4. 날짜형 함수
문자형 함수 | 함수 설명 |
SYSDATE /GETDATE() | 현재 날짜, 시각 출력 |
EXTRACT('YEAR'|'MONTH'|'DAY' from d) /DATEPART('YEAR'|'MONTH'|'DAY', d) | 년/월/일 데이터 시간/분/초도 가능. |
1
SELECT SYSDATE() FROM DUAL;
5. 변환형 함수
특정 데이터 타입을 다양한 형식으로 출력.
크게
- 명시적Explicit 데이터 유형 변환 : 데이터 변환형 함수로 데이터 유형을 변환하도록 명시
- 암시적Implicit 데이터 유형 변환 : DB가 자동으로 데이터 유형 변환하여 계산
문자형 함수 | 함수 설명 |
TO_NUMBER(문자열) | alphanumeric 문자열을 숫자로 변환 |
TO_CHAR(숫자|날짜 [, FORMAT]) | |
TO_DATE(숫자|날짜 [, FORMAT]) |
6. CASE
표현
IF-THEN-ELSE
논리와 유사.
SQL의 비교 연산 기능 보완하는 역할.
1
2
3
4
IF SAL > 2000
THEN REVISED_SALARY = SAL
ELSE REVISED_SALARY = 2000
END-IF;
CASE 표현 | 함수 설명 |
CASE SIMPLE_CASE_EXPRESSION 조건 ELSE 표현절 END | |
CASE SEARCHED_CASE_EXPRESSION 조건 ELSE 표현절 END | |
DECODE(표현식, 기준값1, 값1, 기준값2, 값2, ..., 디폴트값 |
CASE
표현은 함수 성질 가지므로,
다른 함수처럼 중첩 사용 가능.
1
2
3
4
5
6
7
8
9
SELECT ENAME SAL,
CASE WHEN SAL >= 2000
THEN 1000
ELSE (CASE WHEN SAL >= 1000
THEN 500
ELSE 0
END)
END as BONUS
FROM EMP;