[DB] 오라클 데이터 타입

박세진·2021년 3월 16일
0

DataBase

목록 보기
4/4
post-thumbnail
post-custom-banner

✅ 데이터타입

: 시스템과 프로그래밍 언어에서 실수/소수/자료형 등의 여러 데이터를 식별하는 타입.

원하는 정보를 가장 효율적으로 처리하려면 ?
=> 적절한 데이터 타입의 선정이 필요하다 !

적절하지 못한 데이터 타입의 선정은 수행속도를 나쁘게 하고 불필요한 자원의 낭비를 가져온다.

오라클에서 제공하는 데이터 타입들에 대해 하나하나 살펴보자.


CHAR 타입

  • 고정길이 문자형 타입
  • 최대 길이 만큼 스페이스로 공백을 채운다.
  • 최대 2000바이트 까지 저장 가능하다.(약 666글자)

    한글 한 글자는 3 Byte 로 저장되고, 한글을 제외한 공백/숫자는 1 Byte로 저장된다.

VARCHAR2 타입

  • 가변길이 문자형 타입
  • 최대 자리까지 공백을 채우지 않는다는 점이 CHAR타입 과의 차이점.

    정의된 기억공간에서 데이터의 길이만큼 사용하고, 남는 공간은 시스템에 반납한다.

  • 최대 4000 바이트 까지 저장 가능
  • 반드시 길이 지정해야 함 !
  • 다른 타입에 비해 제한이 적다
  • 일부만 입력시 뒷부분은 NULL
  • 입력한 값의 뒷부분에 있는 BLACK도 같이 입력
  • 전혀 값을 주지 않으면 NULL 상태 입력
  • 지정된 길이보다 길면 에러 발생
  • 컬럼 길이의 편차가 심한 경우, NULL 로 입력되는 경우가 많은 경우 VARCHAR2 사용 !

NUMBER 타입

  • 숫자형 데이터 타입, 음수, ZERO, 양수 저장
  • 전체 자릿수는 38자리를 넘을 수 없다
  • 소수점이 지정되지 않았을 때 소수점이 입력되거나 or 지정된 소수점 자리 이상 입력되면 반올림되어 저장
  • 지정한 정수 자리수 이상 입력시 에러 발생
  • 연산이 필요한 컬럼은 NUMBER 타입으로 지정
  • NUMBER(p,s) 로 지정시 p는 s의 자리수를 포함한 길이이므로 감안하여 p의 자릿수를 결정

✅ NUMBER 를 정의하는 방법

  • 고정 소수점 숫자 : NUMBER(p,s)
  • 정수 : NUMBER(p) 또는 NUMBER(p,0)
  • 부동 소수점 숫자 : NUMBER

    고정 소수점 방식

    특정 위치에 소수점을 고정해놓고 그 앞자리에는 실수의 정수부를, 뒷자리에는 실수의 소수부를 나타내는 방식.

    NUMBER(p,s) 에서 p는 소수점 기준 모든 유효숫자 자릿수.
    만약 p에 명시한 것보다 큰 숫자값을 입력하면 오류가 발생한다.
    s가 양수면 소수점 이하의 유효숫자 자릿수
    s가 음수면 소수점 이상(소수점 기준 왼쪽) 유효숫자 자릿수를 나타낸다.

    s에 명시한 숫자 이상의 숫자를 입력하면, s에 명시한 숫자로 반올림 처리

    s가 음수이면 소수점 기준 왼쪽 해당 자릿수에서 반올림한다.

    ✅ s가 p보다 크면 ✅

    1. p(정밀도) : 0이 아닌 유효숫자의 수
    2. s(스케일)-p(정밀도) : 소수점 이하에 존재해야 할 0의 개수
    3. s : 소수점 이하의 데이터의 수.

NUMBER 형 예제

숫자값타입결과설명
123.54NUMBER123.5소수점이 지정되지 않았을 때 소수점이 입력되어 반올림해서 저장.
123.54NUMBER(3)124p는 3이고, s는 0이다. 이때는 유효숫자가 3개여야 하므로 소수점 아래 첫번째 자리에서 반올림.
123.54NUMBER(3,2)오류p는 3인데 유효숫자는 5자리. 유효숫자가 p에 명시한 것보다 더 크므로 오류이다.
123.54NUMBER(5,2)123.54총 유효숫자가 5자리이고 소수점 이하 유효숫자 2자리 맞으므로 정상.
123.54NUMBER(7,1)123.5s가 1이므로 .54가 반올림되어 .5까지 표시. p보다 유효숫자가 더 작은것은 괜찮음 (크면 오류!)
123.54NUMBER(7,-1)120소수점 기준 왼쪽 첫번째 자리에서 반올림하니까 120이 나온다.
125.54NUMBER(7,-1)130마찬가지의 방법으로 하면 130이 나온다.
0.1234NUMBER(4,5)오류유효숫자는 4개가 맞지만 s가 5인데 소수점 이하가 4자리 이므로 오류.(유효숫자가 p 보다 작은것은 ok. s보다 작은 것은 오류)
0.01234NUMBER(4,5)0.01234소수점이하 5자리까지 유효숫자가 4개이므로 정상이다.
0.0001234NUMBER(4,7)0.0001234소수점이하 7자리까지 유효숫자가 4개이므로 정상
0.0001234NUMBER(3,7)오류소수점 이하 7자리까지 유효숫자는 4개인데(1234) p가 3이므로 오류.
0.0000123NUMBER(3,7)0.0000123소수점 이하 일곱째자리까지 유효숫자는 3개이고 p가 3이므로 정상. s가 p보다 크므로 여기서는 p가 소수점 이하 유효숫자 자릿수를 의미.
0.00001234NUMBER(3,7)0.0000123소수점 이하 7자리까지 유효숫자는 123의 3개(4는 제외됨)

DATE 타입

  • 일자와 시간을 저장하는 날짜형 타입
  • 일자와 시간의 연산이 빈번한 경우 사용
  • 포함정보 : 세기, 년도, 월, 일, 시간, 분, 초
  • SYSDATE : 현재일과 시간을 제공

LONG 타입

  • 최대 2기가바이트의 가변길이 문자 저장
  • LONG 타입은 하나의 테이블에서 1개만 사용 가능
  • CLOB 으로 대체 (기능 업그레이드 중단)
  • SELECT문의 SELECT절, UPDATE문의 SET절, INSERT문의 VALUES절에서 사용 가능.

CLOB타입

  • 대용량 문자열 자료 를 처리하기 위한 데이터 타입
  • 최대 4GB 까지 처리 가능
  • 가변길이 문자 자료형
  • 한 테이블에서 사용될 수 있는 CLOB의 개수에 제한이 없음
profile
계속해서 기록하는 개발자. 조금씩 성장하기!
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 11월 30일

지금도 금융쪽 it업무 하고 계신가요?

답글 달기