[SQLD] 2과목 SQL 기본 및 활용 - 함수

박진우·2022년 6월 1일
0

SQLD

목록 보기
10/21

💡 내장 함수

내장 함수의 개요..

  • 함수는 다양한 기준으로 분류할 수 있는데, 벤더에서 제공하는 함수인 내장 함수(Built-in Function)사용자 정의 함수(User Defined Function)로 나눌 수 있다.

  • 함수는 입력되는 값이 많아도 출력은 하나만 된다.(M:1)

  • 본 절에서는 각 벤더에서 제공하는 DB를 설치하면 기본적으로 제공되는 SQL 내장 함수 에 대해 설명한다.



◽ 함수의 종류


내장 함수는 다시 함수의 입력 값이 단일행 값이 입력되는 단일행 함수(Single-Row Function)와 여러 행의 값이 입력되는 다중행 함수(Multi-Row Function)로 나눌 수 있다.
다중행 함수는 다시 집계 함수(Aggregate Function), 그룹 함수(Group Function), 윈도우 함수(Window Function)로 나눌 수 있다.




◽ 단일행 함수(Signle-Roow Function)

: 함수의 입력값이 단일행

  • SELECT, WHERE, ORDER BY 절에서 사용 가능하다.

  • 여러 인자를 입력해도 단 하나의 결과만 출력한다.

  • 각 행들에 대해 개별적으로 작용하여 데이터 값을 조작하고 각각의 행에 대한 조작 결과를 반환한다.



◽ 단일행 문자형 함수


“경기장의 지역번호와 전화번호를 합친 번호의 길이를 구하시오.”

SELECT STADIUM_ID, DDD+TEL as TEL, LEN(DDD+TEL) as T_LEN FROM STADIUM;

➡ (LEN -> 문자열의 갯수를 숫자값으로 리턴)



◽ 단일행 숫자형 함수




◽ 단일행 날짜형 함수


데이터베이스에 DATE 변수는 내부적으로 세기/년/월/일/시/분/초와 같은 숫자형식으로 변환하여 저장된다.
날짜를 숫자로 저장하기 때문에 덧셈, 뺄셈 같은 산술 연산자로도 계산이 가능하다.

  • Oracle SQL>>
EXTRACT(MONTH FROM HIREDATE) 입사월, EXTRACT(DAY FROM HIREDATE) 입사일 FROM EMP; 

사원(EMP) 테이블의 입사일자에서 년, 월, 일 데이터를 각각 출력한다


  • SQL>>

    SELECT ENAME, HIREDATE, DATEPART(YEAR, HIREDATE) 입사년도, 
    DATEPART(MONTH, HIREDATE) 입사월, DATEPART(DAY, HIREDATE) 입사일 FROM EMP; 
    
                                   같은 코드
    
    SELECT ENAME, HIREDATE, YEAR(HIREDATE) 입사년도, MONTH(HIREDATE) 입사월, 
    DAY(HIREDATE) 입사일 FROM EMP;
    

사원(EMP) 테이블의 입사일자에서 년, 월, 일 데이터를 각각 출력한다.





◽ 변환형 함수

특정 데이터 타입을 다양한 형식으로 출력하고 싶을때 사용하는 함수

 종류

 설명

 명시적 데이터 유형 변환

데이터 변환형 함수로 데이터 유형을 변환하도록 명시해 주는 경우 

 암시적 데이터 유형 변환

데이터베이스가 자동으로 데이터 유형을 변환하여 계산하는 경우 




◽ NULL 과 관련된 함수

NVL / ISNULL 함수

  • 표현식 1의 값이 NULL이면 표현식2 값을 출력한다.

  • 결과값을 NULL이 아닌 다른 값을 얻고자 할 때 NVL/ISNULL 함수를 사용한다.

  • NULL 값의 대상이 숫자 유형 데이터인 경우는 주로 0(Zero)으로,
    문자 유형 데이터인 경우는 블랭크보다는 ‘x’ 같이 해당 시스템에서 의미 없는 문자로 바꾼다.


NULL과 공집합

SELECT 1 FROM DUAL WHERE 1 = 2;

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

NULLIF(표현식1, 표현식2)

표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴한다 .

  • SQL>>

    SELECT ENAME, EMPNO, MGR, NULLIF(MGR,7698) NUIF FROM EMP;
    

사원 테이블에서 MGR와 7698이 같으면 NULL을 표시하고, 같지 않으면 MGR를 표시한다.


COALESCE(표현식1,표현식2,…)

  • 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다

  • COALESCE 함수는 인수의 숫자가 한정되어 있지 않으며, 임의의 개수 EXPR에서 NULL이 아닌 최초의 EXPR을 나타낸다.

  • 만일 모든 EXPR이 NULL이라면 NULL을 리턴한다.

  • SQL>>

    SELECT ENAME, COMM, SAL, COALESCE(COMM, SAL) COAL FROM EMP; 
    

    사원 테이블에서 커미션(COMM)을 1차 선택값으로, 급여(SAL)를 2차 선택값으로 선택하되 두 칼럼 모두 NULL인 경우는 NULL로 표시한다

0개의 댓글