단일행 함수

2020. 6. 24. 23:50데이터베이스/Oracle

함수

내장 함수 다양한 기준으로 분류를 할수 있는데 밴더에서 제공하는 함수인 내장 함수(Built-in Function)와 사용자가 정의할 수 있는 함수(User Defined Function)로 나눌 수 있습니다. 내장 함수는 다시 함수의 입력 값이 단일행 값이 입력되는 단일행 함수(Single-Row Function)와 여러 행의 값이 입력되는 다중행 함수(Multi-Row Function)로 나눌 수 있다. 다중행 함수는 다시 집계 함수(Aggregate Function), 그룹 함수(Group Function), 윈도우 함수(Window Function)로 나눌 수 있다.

형식: 함수명 (칼럼이나 표현식 [, Arg1, Arg2, ... ])

단일행 함수 특징

SELECT, WHERE, ORDER BY 절에 사용 가능합니다 그리고 각 행(Row)들에 대해 개별적으로 작용하여 데이터 값들을 조작하고, 각각의 행에 대한 조작 결과를 리턴합니다.

여러 인자(Argument)를 입력해도 단 하나의 결과만 리턴한다.함수의 인자(Arguments)로 상수, 변수, 표현식이 사용 가능하고, 하나의 인수를 가지는 경우도 있지만 여러 개의 인수를 가질 수도 있습니다.특별한 경우가 아니면 함수의 인자(Arguments)로 함수를 사용하는 함수의 중첩이 가능합니다.

리턴되는 값을 예를 들어 설명한 사례

SQL Expert'라는 문자형 데이터의 길이를 구하는 문자형 함수를 사용합니다

DUAL 테이블 특징

  • 사용자 SYS가 소유하며 모든 사용자가 액세스 가능한 테이블입니다.
  • SELECT ~ FROM ~ 의 형식을 갖추기 위한 일종의 DUMMY 테이블입니다.
  • DUMMY라는 문자열 유형의 칼럼에 'X'라는 값이 들어 있는 행을 1건 포함하고 있습니다.

숫자형 함수

숫자형 함수는 숫자 데이터를 입력받아 처리하고 숫자를 리턴하는 함수입니다

 

날짜형 함수

날짜형 함수는 DATE 타입의 값을 연산하는 함수이다입니다.

Oracle의 TO_NUMBER(TO_CHAR( )) 함수의 경우 변환형 함수로 구분할 수도 있으나 SQL Server의 YEAR, MONTH,DAY 함수와 매핑하기 위하여 날짜형 함수에서 설명합니다.

데이터베이스는 날짜를 저장할 때 내부적으로 세기(Century), 년(Year), 월(Month), 일(Day), 시(Hours), 분(Minutes), 초(Seconds)와 같은 숫자 형식으로 변환하여 저장하며 덧셈, 뺄셈 같은 산술 연산자로도 계산이 가능하다.

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

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

명시적 데이터 유형 변환에 사용되는 대표적인 변환형 함수는 다음과 같습니다.

변환형 함수를 사용하여 출력 형식을 지정할 때, 숫자형과 날짜형의 경우 상당히 많은 포맷이 벤더별로 제공된다. 벤더별 데이터 유형과 함께 데이터 출력의 포맷 부분은 벤더의 고유 항목이 많으므로 매뉴얼을 참고하시면 됩니다

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

  • NULL 특성
    • 값이 정해져 있지 않으므로 0 , 공백, ""와는 다르다.(0:숫자, 공백:문자, "":문자)
    • 테이블 생성시 PK 혹은 NOT NULL 컬럼 이외에는 모든 데이터 유형은 NULL 값을 가질수 있다.
    • NULL값을 포함한 연산을 할 경우 결과 값도 NULL이다.
    • NULL 값이 아닌 값을 얻고자 할때는 NVL, ISNULL 함수를 사용 해야 한다.
  • NULL을 포함한 데이터 연산

    NVL/ISNULL 함수를 유용하게 사용하는 예는 산술적인 계산에서 데이터 값이 NULL일 경우입니다
    칼럼 간 계산을 수행하는 경우 NULL 값이 존재하면 해당 연산 결과가 NULL 값이 되므로 원하는 결과를 얻을 수 없는 경우가 발생합니다
    이런 경우는 NVL 함수를 사용하여 숫자인 0(Zero)으로 변환을 시킨 후 계산을 해서 원하는 데이터를 얻는다. 

    데이터 조건이 한건도 없는 경우를 공집합이라고 하지만 NULL값 데이터와는 다르게 이해해야 합니다.
    예) SELECT MGR FROM EMP WHERE ENAME='KING';위의 쿼리에서 ENAME이 KING인 사람은 존재를 하나 MGR의 데이터의 값이 없는 경우 공집합에 해당하지 않습니다.

'데이터베이스 > Oracle' 카테고리의 다른 글

조인  (0) 2020.06.26
무결성 제약 조건  (0) 2020.06.25
수정, 삭제, 조회  (0) 2020.06.23
관계형 데이터 베이스  (0) 2020.06.22
Oracle 데이터베이스  (0) 2020.03.20