타오름
조각보
타오름
전체 방문자
오늘
어제
  • 조각보
    • DEVELOPER B 🌱
      • Programming
      • Java
      • Spring | SpringBoot
      • JPA
      • Database
      • DS | Algorithms
      • CS
      • Git | Github
      • IDE

블로그 메뉴

  • HOME
  • TAG
         
        

CALENDAR

        
«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
    

티스토리

hELLO · Designed By 정상우.
타오름

조각보

[SQLD] 함수(FUNCTION) 요약
DEVELOPER B 🌱/Database

[SQLD] 함수(FUNCTION) 요약

2021. 8. 31. 15:30

 

 

 

> FUNCTION

 

    - 함수는 다양한 기준으로 분류할 수 있는데, 벤더에서 제공하는 함수인 내장함수와 사용자가 정의할 수 있는 함수로도 나눌 수 있다.

    - 내장 함수는 벤더별로 가장 큰 차이를 보이는 부분이지만, 핵심적인 기능들은 이름이나 사용법이 다르더라도 대부분의 데이터베이스가 공통적으로 제공하고 있다.

    - 일반적으로 함수는 입력되는 값이 많아도 출력은 하나만 된다는 M:1 관계

    - 단일 행 함수의 경우 단일 행 내에 있는 하나의 값 또는 여러 값이 입력 인수로 표현될 수 있다.

    - 단일 행 함수의 경우 각 행들에 대해 개별적으로 작용하여 데이터 값들을 조작하고, 각각의 행에 대한 조작 결과를 리턴한다.

    - 단일 행 함수의 경우 SELECT, WHERE, ORDER BY 절에 사용 가능하다.

    - 특별한 제약이 없다면 함수의 인자로 함수를 사용하는 함수의 중첩이 가능하다.

 

종류 내용 함수의 예
문자형 함수 문자를 입력하면 문자나 숫자 값을 반환 LOWER UPPER CONCAT SUBSTR LENGTH ...
숫자형 함수 숫자를 입력하면 숫자 값을 반환 ABS MOD ROUND TRUNC SIGN ...
날짜형 함수 DATE 타입의 값을 연산 SYSDATE EXTRACT ...
변환형 함수 문자나 숫자 날짜형 값의 데이터 타입을 변환 TO_CHAR TO_NUMBER TO_DATE
NULL  함수 NULL을 처리하기 위한 함수 NVL/ISNULL NULLIF COALESCE

 

 

 

> 날짜형 함수

 

    - 날짜 데이터는 시스템 구성에 따라 다양하게 표현될 수 있다.

 

연산 결과 설명
날짜 + 숫자 날짜 숫자만큼의 날수를 날짜에 더한다
날짜 -  숫자 날짜  숫자만큼의 날수를 날짜에서 뺀다
날짜1 - 날짜2 날짜수 다른 하나의 날짜에서 하나의 날짜를 빼면 일수가 나온다.
날짜 + 숫자/24 날짜  시간을 날짜에 더한다.

 

 

 

> 변환형 함수

   

    - 변환형 함수는 특정 데이터 타입을 다양한 형식으로 출력하고 싶을 경우에 사용되는 함수.

    - 암시적 데이터 유형 변환의 경우 인덱스 미사용으로 인한 성능 저하가 발생 할 수 있으며, 자동적으로 데이터베이스가 알아서 계산하지 않는 경우가 있어 에러를 발생할 수 있으므로 명시적 데이터 유형 변환 방법을 사용하는 것이 바람직하다.

 

명시적 데이터 유형 변환 데이터 변환형 함수로 데이터 유형을 변환하도록 명시해주는 경우
암시적 데이터 유형 변환 데이터베이스가 자동으로 데이터 유형을 변환하여 계산하는 경우 

 

 

 

> CASE 표현

 

    - CASE 표현은 IF-THEN-ELSE 논리와 유사한 방식으로 표현식을 작성해서 SQL의 비교 연산 기능을 보완하는 역할

    -  CASE 표현은 함수의 성질을 가지고 있으므로, 다른 함수처럼 중첩해서 사용할 수 있다.

    

CASE 표현  함수 설명
   CASE 
       SIMPLE_CASE_EXPRESSION 조건
       ELSE 표현절
   END
 - SIMPLE_CASE_EXPRESSION은 CASE 다음에 바로 조건에 사용되는 칼럼이나 표현식을 표현하고 다음 WHEN 절에서 정의한 칼럼이나 표현식이 같은지 아닌지 판단하는 문장으로 EQUI(=) 조건 사용해서 씀
 - ORACLE의 DECODE 함수와 기능면에서 동일
   CASE 
       SEARCHED_CASE_EXPRESSION 조건
       ELSE 표현절
   END
- SEARCHED_CASE_EXPRESSION은 CASE 다음에는 칼럼이나 표현식을 표시하지 않고 다음 WHEN 절에서 EQUI(=) 조건 포함 여러 조건(>, >= , <, <=)을 이용한 조건 절을 사용할 수 있기 때문에 윗 경우보다 좀 더 다양한 조건을 적용할 수 있다는 장점
   DECODE(표현식, 기준값1, 값1, 
   [, 기준값2, 값2, ....... , 디폴트값) 
- 오라클에서만 사용되는 함수로, 표현식의 값이 기준값1과 같으면 값 1을 출력하고, 기준값2이면 값 2를 출력한다. 그리고 기준값이 없으면 디폴트 값을 출력한다.

 

 

> NULL

 

    - 널 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다. 0은 숫자이고, 공백은 하나의 문자이다.

    - 테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않는 모든 데이터 유형은 널 값을 포함할 수 있다.

    - 널 값을 포함하는 연산의 경우 결과 값도 널 값이다. 모르는 데이터에 숫자를 더하거나 빼도 결과는 마찬가지로 모르는 데이터인것 과 같다. 

    - 결과값이 널이 아닌 다른 값을 얻고자 할 때 NVL/ISNULL 함수를 사용한다. NULL 값의 대상이 숫자 유형 데이터인  경우에는 주로 0으로, 문자 유형 데이터인 경우는 블랭크보다는 'X' 같이 해당 시스템에서 의미 없는 문자로 바꾸는 경우가 많다.

 

일반형 함수 함수 설명
  NVL/ISNULL 
  (표현식 1, 표현식 2)
표현식 1의 결과값이 NULL이면 표현식 2의 값을 출력한다. 단, 표현식 1과 표현식 2의 결과 데이터 타입이 같아야 한다. NULL 관련 가장 많이 사용되는 함수
  NULLIF
  (표현식 1, 표현식 2)
표현식1이 표현식2와 같으면  NULL, 같지 않으면 표현식1을 리턴
  COALESCE
  (표현식 1, 표현식 2)
임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다. 모든 표현식이 NULL이라면 NULL을 리턴

 

 

 

> NULL과 공집합

 

    - SELECT 1 FROM DUAL WHERE 1 = 2;  같은 조건이 대표적인 공집합을 발생시키는 쿼리이며, 위와 같이 조건에 맞는 데이터가 한 건도 없는 경우를 공집합이라고 하고, NULL 데이터와는 또 다르게 이해해야 한다. 

 

 

 

출처 : 한국데이터산업진흥원 게시자료

저작자표시 비영리 변경금지 (새창열림)
    'DEVELOPER B 🌱/Database' 카테고리의 다른 글
    • [SQLD] 조인(JOIN) 요약
    • [SQLD] GROUP BY, HAVING 절, ORDER BY 절 요약
    • [SQLD] WHERE 절 요약
    • [SQLD] 트랜잭션 제어어 (TCL) 요약
    타오름
    타오름

    티스토리툴바