DB/ORACLE

4.[오라클]타입관련 정리

혼자좀비 2024. 1. 7. 18:12

※데이터베이스 객체의 종류

데이터테이스객체 설명
테이블 데이터를 담는 객체
하나이상의 테이블을 연결해 마치 테이블인 것처럼 사용
인텍스 테이블에 있는 데이터를 빠르게 찾기(책갈피라고 생각하면된다)
시노님 데이터베이스 객체에 대한 별칭을 부여
시퀀스 일련번호 채번을 할때 사용
함수 특정 연산을 하고 값을 반환
프로시저 함수와 비슷하지만 값을 반환하지 않고 사용
패키지 용도에 맞게 함수나 프로시저를 하나로 묶어 놓음

 

※문자 데이터 타입

데이터 타입 설명
CHAR 고정길이문자 최대 2000byte,디폴트값은 1byte
VARCHAR2 가변길이 문자,최대 4000byte,디폴트값은 1byte
NCHAR 고정길이 유니코드 문자(다국어입력가능), 최대2000byte,디폴트 값은 1
NVERCARCHAR2 가변길이 유니코드 문자(다국어입력가능), 최대4000byte,디폴트 값은 1
LONG 최대2gb크기의 가변길이 문자형(잘 사용 안함)

 

※숫자 데이터 타입

데이터 타입 설명
NUMBER[p,s] 가변숫자로 p(1~38,디폴트:38)와 s(-84~127,디폴트:0)는 십진수 기준 최대 22byte
FLOAT [p] NUMBER의 하위 타입으로 p는 1~128(디폴트:128)최대 22byte
BINARY_FLOAT 32비트 부동소수점수, 최대 4byte
BINARY_DOUBLE 64비트 부동소수점수,최대 8byte

(p: precision로 최대 유효숫자 자릿수 ,s:scale로 소수점 기준 자릿수)

 

※FLOAT타입에 대한 주의점

아래와 같이 테이블 생성 후 데이터를 똑같이 넣어주면 32로 지정한 부분이 1234567891000로 나오는것을 확인 할 수 이다.

========테이블 생성=======

CREATE TABLE TEST(
    COL_FLOT1 FLOAT(32),
    COL_FLOT2 FLOAT
);

========데이터 INSERT=======

INSERT INTO TEST(col_flot1, col_flot2) VALUES (1234567891234, 1234567891234);

INSERT한 결과

FLOAT(32)부분에 32부분은 이진수가 기준으로 십진수가 아닌 이진수 기준 32자리(10110100010...식으로 32자리)가 들어간다.

이진수 기준으로 32자리를 10진수로 변환하면 32*0.30103 = 9.63296로 반올림되어 10자리까지만 제대로 들어가고 나머지는 0으로 들어간다.

 

※날짜 데이터 타입

데이터타입 설명
DATE BC 4712뇬 1월1일부터 9999년12월31일, 연,월,일,시,분,초까지 입력 가능
TIMESTAMP 연도,울,일,시,분,초는 물론 밀리초까지 입력가능

 

날짜 정확도는 DATE보다 TIMESTAMP의 날짜 확도가 높다..

(날짜만 사용할 경우는 DATE가 좋고, 시,분,초까지 사용할 경우에는 TIMESTAMP를 사용하는것이 정화도를 높이기에 좋다.)

 

데이터 타입 설명
CLOB 문자형 대용량 객체,고정길이와 가변길이 문자 집합. 최대크기(4GB-1)*(데이터베이스 블록사이즈)
NCLOB 유니코드(다국어지원)를 포함한 문자형 대용량 객체. 최대크기(4GB-1)* (데이터베이스 블록사이즈)
BLOB 이진형 대용량 객체, 최대 크기 (4GB-1)* (데이터베이스 블록사이즈)
BFILE 대용량 이진파일에 대한 로케이터(위치,이름)저장, 최대 크기 4GB

 

  • 문자형 대용량 : CLOB,NCLOB을 사용
  • 그래픽,이미지,동영상등 : BLOB
  • 그외 : BFILE (데이터베이스 외부에 있는 파일에 대한 로케이터(해당 파일에 대한 포인터)를 저장하고 실제 파일을 수정할 수 없고 읽기만 가능)