함수
- x값을 넣으면 y값이 나오는 개념
- 함수를 사용하는 이유 검색하기위해
데이터 타입 종류
문자
- CHAR(n) : n 크기만큼 고정 길이의 문자 타입을 저장(최대 2000byte 저장 가능)
- VARCHAR2(n) : n 크기만큼 가변 길이의 문자 타입을 저장(최대 4000byte 저장 가능)
- 보통 VARCHAR2 사용
숫자
- NUMBER(p, s) : 숫자 타입 저장(p:정수 자릿수 , s : 소수 자릿수)
날짜
- DATE : 날짜 타입을 저장 9999년 12월 31일까지 저장 가능
단일 행 함수
- where절 사용 가능 (중요)
- 문자 타입 함수 : 문자 숫자 둘다 입력가능 문자와 숫자 반환
- 숫자 타입 함수 : 문자 숫자 둘다 입력가능 숫자를 반환
- 날짜 타입 함수 : 날짜에 대해 연산(숫자 반환하는 MONTH_BETWEEN 함수 제외)
- 변환 타입 함수 : 임의의 데이터 타입 값을 다른 데이터 타입으로 반환
- 일반 함수 : DECODE, CASE 등등
사칙연산 할거면 숫자 안할거면 문자로
문자 타입 함수
검색 다양하게 할 수 있음
lower : 데이터값 소문자로
upper : 대문자로
initcap : 첫 번째 문자만 대문자로
substr : 지정한 길이 만큼 문자열 추출 (substr(job_id, 1, 2) 첫째자리 시작해서 두 개의 문자 출력)
replace : 특정 문자를 찾아 바꾸기
lpad, rpad : 특정 문자로 자릿수 채우기
ltrim, rtrim : 특정 문자 삭제하기
trim : 공백 제거
숫자 타입 함수
round : 지정 숫자 반올림
trunc : 숫자 절삭하기
ceil : 숫자를 정수로 올림
floor : 숫자를 정수로 내림
날짜 타입 함수
날짜 함수를 사용하기위해 데이터가 Date 형태여야한다
MONTHS_BETWEEN : 두 날짜 사이의 월수를 계산
ADD_MONTHS : 월을 날짜에 더한다
NEXT_DAY : 명시된 날짜를 돌아오는 요일에 대한 날짜를 출력
LAST_DAY : 월의 마지막 날을 계산
round : 날짜를 가장 가까운 연도 또는 월로 반올림
trunc : 날짜를 가장 가까운 연도 또는 월로 절삭
변환 함수
자동 데이터 타입 변환
- 특정한 경우에 데이터 타입을 자동으로 변환해줌
수동 데이터 타입 변환
- To_CHAR : 날짜 문자 숫자 값을 지정한 형식의 VARCHAR2 타입 문자열로 변환
- To_NUMBER : 문자를 숫자 타입으로 변환
- TO_DATE : 날짜를 나타내는 문자열을 지정 형식의 날짜 타입으로 변환
일반함수
NVL : null 값 처리(특정 열의 행에 대한 데이터 값이 없으면 null이 됨)
- NVL(null이 포함된 열이나 값, null에서 변환하고자 하는 값)
DECODE
- 조건 논리 가능하게 하는 함수
- DECODE(열이름, 조건 값, 치환 값, 기본값)
- CASE로 변형 가능
ex)
SELECT first_name,
last_name,
department_id,
salary 원래급여,
DECODE(department_id, 60, salary*1.1, salary) 조정된급여,
DECODE(department_id, 60, '10%인상', '미인상') 인상여부
FROM employees;
CASE표현식
- 복잡한 조건 논리 처리하기
- 복잡한 조건식을 여러개로 적용 할 때 DECODE 함수 보다 이용하기 유용
ex)
SELECT first_name,
last_name,
department_id,
salary as 원래급여,
(CASE department_id
WHEN 60 THEN salary*1.1
ElSE salary
END) as 조정된급여
from EMPLOYEES;
RANK, DENSE_RANK, ROW_NUMBER
- 순위를 매기는 함수
- RANK (1,2,2,4 .....)
- DENSE_RANK (1,2,2,3....)
- ROW_NUMBER (1,2,3,4,....)
ex)
RANK() OVER(PARTITION BY A.department_id ORDER BY salary DESC) RANK_급여,
DENSE_RANK() OVER(PARTITION BY A.department_id ORDER BY salary DESC) DENSE_RANK_급여,
ROW_NUMBER() OVER(PARTITION BY A.department_id ORDER BY salary DESC) ROW_NUMBER_급여
그룹함수
count : 행 개수를 샘
sum : 합계
avg : 평균
- avg(nvl(salary, 0)) null 값 치환 후 정확한 계산 가능
max : 최댓값
min : 최솟값
stddev : 표준편차
variance : 분산
- count(*)의 경우 null 값도 개수로 셈
- 나머지 null 값 제외하고 연산
GROUP BY
- 모든 DB에서 사용가능
- 기준 열을 지정하여 그룹화 하는 명령어
ex)
select to_char(hire_date,'day'), sum(salary)
from EMPLOYEES
group by to_char(hire_date,'day')
order by to_char(hire_date,'day') ASC;
HAVING
- 그룹화된 값에 조건식을 적용할 때 사용
모두의 SQL 누구나 쉽게 배우는 데이터 분석 기초
김도연 지음 길벗
'데이터 베이스' 카테고리의 다른 글
DML : 데이터의 삽입/갱신/삭제 (0) | 2021.05.14 |
---|---|
서브쿼리 : SELECT 문 안에 있는 SELECT 문 (0) | 2021.05.14 |
ERD : 데이터베이스 개체 설계도, 조인과 집합: 여러 개의 테이블 연결하기 (0) | 2021.05.14 |
SELECT : 데이터 조회의 기본 (0) | 2021.05.12 |
관계형 데이터베이스와 SQL (0) | 2021.05.12 |