같이 공부중인 친구의 데이터베이스의 그룹함수 Part 수업을 듣고 공부를 하다 의문이 생겨 포스팅을 하게되었다.
Database는 내가 또는 다른 사람과 함께 사용할 Data를 축적하고 관리하기 위해 사용하는 것이 아닌가?
대체 함수가 왜 필요하지? 그냥 넣고 빼기만 하면되는거 아닌가?
Database에서 함수를 사용하는 이유
우리는 SQL이라는 언어를 통해 Data를 Database에 입력 또는 출력할 수 있다.
*SQL : Database와 질의(소통)할 수 있도록 제공되는 언어
그렇다면 DB에서 말하는 함수(Function)이란 무엇이고 왜 필요할까?
단지 데이터를 넣고 빼고하는 용도말고 이외에 뭐가 더 그리고 왜 필요한가?
Database는 단순히 데이터의 축적을 위해서 뿐만 아니라 여러 사람이 공유할 목적의 데이터를 관리하기 위해 필요하다고 설명한 적이 있다.
그러면 더 본질적으로 생각해 보자 Data를 관리하는 원초적인 이유는 뭘까?
축적한 데이터를 이용하기 위해서다! Data를 쌓아 놓기만 해선 아무 가치도 발생하지 않는다.
함수는 우리가 축적하고 관리하는 데이터를 좀 더 효율적이고 쉽게 이용하기 위해 사용하는 것이다.
함수
정의
이과든 문과든 한국의 중,고등학교를 나온 당신은 분명 함수란 말을 들어 봤을 것이고 사용해 봤을 것이다.
데이터베이스의 함수라고 수학의 함수와 그 궤를 달리하는 의미를 가지고 있지 않다.
아래에 두 개의 수학식이 있다. 두 식의 의미는 완전히 같다.
y = x+3
f(x)=x+3
우리가 x에 숫자를 넣으면 y는 계산한 결과값이 나온다.
데이터베이스의 함수도 마찬가지다. 함수에 어떠한 값을 입력하면 로직을 수행하고 결과값을 반환한다.
여기서 수학과의 차이점이 한 가지있다. 바로 입력되는 값이다.
데이터베이스의 함수에서는 함수의 입력값이 상수가 될 수도 있지만 행 단위로도 이루어진다.
종류
1. 내장 함수 (built-in function) : DBMS가 제공하는 함수
1) 단일행 함수 (Single-Row Function) : 함수의 입력 값이 단일 행인 함수
2) 다중행 함수 (Multi-Row Function) : 함수의 입력 값이 여러 행인 함수
a) 집계 함수 (Aggregate Function)
b) 그룹 함수 (Group function)
c) 윈도우 함수 (Window Function)
2. 사용자 정의 함수(user-defined function) : 사용자가 필요에 따라 직접 만듬
단일행 함수 (Single-Row Function)
1. 다양한 위치에 사용 될 수있다. (SELECT, WHERE 등)
2. 단일행 함수의 경우 단일행 내에 있는 하나의 값 또는 여러 값이 입력 인수로 표현될 수 있다.
3. 함수명 (칼럼 or 표현식 [, Arg1, Arg2, ... ])
4. 처리하는 데이터의 형식에 따라서 문자형, 숫자형, 날짜형, 변환형, NULL 관련 함수로 나눌 수 있다
1) 숫자 함수
a) ROUND() : 반올림한 값을 구하는 함수
b) ABS() : 절대값을 구하는 함수
2) 문자 함수
a) UPPER() : 대문자로 변환
b) LOWER() : 소문자로 변환
c) INITCAT() : 첫글자만 대문자로, 나머지 글자는 소문자로
ex)
SELECT ‘bit6’, UPPER(‘bit6’), LOWER(‘bit6’), INITCAP(‘bit6’) FROM DUAL;
Column대신 홑 따옴표로 감싼 표현식을을 함수의 인자로 입력했다.
결과 값
'bit6' UPPER('bit6') LOWER('bit6') INITCAP('bit6')
----------------------------------------------------------------------------
it6 BIT6 bit6 Bit6
d) LENGTH() : 문자의 길이를 반환
e) LENGTHB() : 문자의 Btye 크기 반환
ex)
SELECT LENGTH('bit6') From dual
SELECT LENGTHB('bit6') From dual
결과 값
LENGTH('bit6')
-----------------
4
결과 값
LENGTHB('bit6')
-----------------
12 *utf-8에는 3바이트로 저장이 된다.
f) SUBSTR() : 문자열 중 특정 위치에서 시작하여 지정한 길이만큼의 문자열을 반환
g) CONCAT() : 두 문자를 결합
3) 날짜, 시간 함수
a) SYSDATE () : 오라클 데이터 베이스에 설정된 현재 날짜와 시간을 반환
4) 널 처리함수
'Database' 카테고리의 다른 글
Join (0) | 2018.11.08 |
---|---|
Dual Table 이란 (0) | 2018.11.08 |
2. SQL (Structured Query Language) 구조화 질의 언어 (0) | 2018.11.05 |
1. Database (0) | 2018.11.05 |