본문으로 바로가기

함수

category Database 2018. 11. 7. 22:44

같이 공부중인 친구의 데이터베이스의 그룹함수 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