오라클 교육 4일차

박기범·2023년 9월 19일
0

오라클

목록 보기
4/5

4일차에는 숫자함수와 NULL처리에 대해서 학습했습니다.



숫자 함수

숫자 함수는 숫자 데이터를 처리하기 위한 함수입니다.

종류의미예시
ROUND지정한 소수점 자리로 값을 반올림ROUND(12.354,1) => 12.4
TRUNC지정한 소수점 자리까지 남기고 값을 버림TRUNC(12.34,1) => 12.3
MODm을 n으로 나눈 나머지MOD(12,10) => 2
CEIL지정한 값보다 큰수 중에서 가장 작은 정수CEIL(12.56) => 13
FLOOR지정한 값보다 작은수 중에서 가장 큰 정수FLOOR(12.34) => 12



NULL 처리

NULL 처리에 대한 예제 코드는 다음과 같습니다.

    --기존 교수 테이블을 Null값 처리
    UPDATE Professor
       SET comm = NVL(comm, 0)
         , Audit_Date = Sysdate
     WHERE comm is null
    ;
	
  • Null을 처리하는 요령
    • Null : 0도 아니고 빈칸도 아닌 어떤 값 (수학에서 공집합과 같은 개념)
    • 시스템에서 Null값이 없는 것이 좋지만 경우에 따라서는 Null값이 있는 상황이 될 수가 있다.
    • Null = System에 들어온 생쥐새끼로 간주한다.
  • Null값을 처리하는 요령
      1. 사전예방조치 - 테이블에서 Not Null Default값을 활용 (원천봉쇄)
      1. 사후조치작업 - Select 질의문에서 NVL , NVL2 등 함수를 활용 (후속처리)
    • 사후조치작업은 개발자 각자의 노하우가 다르다.
  • (그럼에도 불구하고) Null Data가 섞여있을 경우
    • 질의문에서 NVL Or NVL2등을 활용하여 Null Data 처리
    • NVL(비교값, Null을 대체값) , NVL2(비교값, Null이 아닐때 처리값, Null일때 처리값)

Null값 대한 처리는 개발자의 노하우에 따라 각각 다를 수가 있다.
현장에서 주의깊게 관찰하여 Null값에 대한 처리를 축적해 가는 것이 필요하다.


예시코드

      Select profno 교수번호, name 성명, sal 급여, comm 상여
           , sal+comm                 지급총액  
           , sal+NVL(comm,0)          지급총액_1  -- Null 처리 예제 1 , NVL를 사용  
           , NVL(sal+comm,sal)        지급총액_2  -- Null 처리 예제 2 
           , NVL2(comm,sal+comm,sal)  지급총액_3  --  Comm(상여)가 Null이면 Sal반환, Not Null이라면 (sal + comm)을 반환          3  
           , DECODE(comm,NULL,sal,sal+comm)  지급총액_4  
           , Case When comm is null then sal 
                  When comm is not null then sal+comm
                  else sal  
             END  지급총액_5      
        From Professor_tmp  



기타 이론

  • Rank() 함수

    랭크 함수는 분석함수로써 해당 함수를 활용하면 작업이 가능합니다.

  • HASH

    똑같이 인덱스 설정이 되어 있다는 가정하에 오라클은 해쉬형태로 만들기 때문에 더 빠른 처리가 가능합니다. HASH의 주된 특징으로는 Mod함수를 통해 만들게 됩니다. 따라서 Hash는 Single Job Multi Block Access라고도 부릅니다.

  • Plan

    플랜은 오라클에 있어서 최적의 방법이라고 합니다. 일반적으로 오라클이 최적화라고 하는 것은 Not Best But Not Worst 의 방법론을 띄고 있습니다.

  • Hint

    Hint는 사람의 경험을 오라클에 적용하는 방법입니다.



기타 팁

    1. 인덱스를 살펴봅니다. (PK만 설치된 경우가 많다.) PK만 설치되어 있으면 인덱스에 대한 이론을 잘 모릅니다.
    1. last anaylzes를 봅니다. (테이블에 F4누르고 state/size를 보면 있습니다.)
    1. 자료사전 조회하기
      SELECT * FROM user_tables; -> 현재 접속한 사용자(hr)에서 가용할 수 있는 테이블 리스트가 조회됩니다.
    1. PARTITONS 확인하기
    SELECT *
      FROM user_tab_partitions
    ;

COMPOSITE 값이 NO이면 단일 파티션이고 YES이면 Hash 파티션으로 구성되어 있다고 보면 됩니다.

    1. View Point(insight)
      인사이트는 경험을 통해 취득된 지식을 의미합니다.
      foresight는 '예견'을 의미합니다. 즉, VISION이라고도 하고 현재의 데이터를 가지고 미래를 예측하는겁니다.




※공부하고 있어 다소 틀린점이 있을 수 있습니다. 언제든지 말해주시면 수정하도록 하겠습니다.
※용어에 대해 조금 공부 더 해서 수정하겠습니다.

profile
개발자가 되기 위한 한걸음

0개의 댓글