본문 바로가기

데이터베이스(DB)/Oracle
[Oracle] 데이터 형식

//Data Types

1. 문자 형식 > varchar2(+char)

2. 숫자 형식 > number

3 날짜 형식 > date

(+ 이진 데이터 형식)


//문자(Character) 형식 

- ' (홑따옴표)를 사용하여 표현

- 문자, 문자열
- char + String > String

a. char
    - 고정 자릿수 문자열 > 컬럼(공간)의 크기 블변
    - char(n): n자리까지 문자열(byte 기준)
    - n 최소 크기 : 1바이트
    - n 최대 크기 : 2000바이트
    - 주어진 공간을 데이터가 채우지 못하면 나머지 공간을 스페이스로 채운다.
    - 절대적인 속도 자체는 뺘르댜.

b. nchar
    -national의 약자 > 오라클 인코딩과 상관 없이 해당 컬럼을 UTF-16 동작하게
    - 고정 자릿수 문자열 > 컬럼(공간)의 크기 블변
    - char(n): n자리까지 문자열(글자수)
    - n 최소 크기 : 1글자
    - n 최대 크기 : 1000글자

c. varchar2☆
    - 가변 자릿수 문자열 > 컬럼(공간)의 크기 가변
    - varchar2(n): n자리까지 문자열(byte 기준)
    - n 최소 크기 : 1바이트
    - n 최대 크기 : 4000바이트
    - 주어진 공간을 데이터가 채우지 못하면 나머지 공간을 버린다.
        > 데이터의 크기가 공간의 크기가 된다.

d. nvarchar2
    - national의 약자 > 오라클 인코딩과 상관 없이 해당 컬럼을 UTF-16 동작하게
    - 가변 자릿수 문자열 > 컬럼(공간)의 크기 가변
    - char(n): n자리까지 문자열(글자수)
    - n 최소 크기 : 1글자
    - n 최대 크기 : 2000글자

e. clob, nclob (롭)
    - 대용량 텍스트
    - 128TB까지 저장 가능
    - 참조형 > 잘 사용 x

- CHAR[(size [BYTE | CHAR)] : 고정 길이 > 비효율적
- VARCHAR2(size [BYTE | CHAR]) : 가변 길이 > 최대값  설정, 빈 공간은 구분자로 구분하여 반환 

- 전세계 언어 사용 가능 (national의 n)
    ~ NCHAR[(size)] 
    ~ NVARCHAR2(size)

- 큰 데이터를 다루는 경우
    ~ LONG : 최대 2GB > 요즘 잘 안 씀
    ~ CLOB : 대용량 텍스트 데이터 타입(최대 4GB)
    ~ NCLOB: 대용량 텍스트 유니코드 데이터 타입(최대 4GB)


CREATE  TABLE MEMBER
(
    ID          VARCHAR2(50),
    PWD         VARCHAR2(50),
    NAME        VARCHAR2(50),
    GENDER      NCHAR(2), --남성, 여성
    AGE         NUMBER,
    BIRTHDAY    CHAR(10), --2000-01-02
    PHONE       CHAR(13), --010-1234-2345
    REGDATE     DATE
);

// 숫자(Numeric) 형식

- 정수, 실수
- (유효자리) 38자리 이하의 숫자를 표현하는 자료형
- 12345678901234567890123456789012345678
- 1x10^-130 ~ 9.9999x10^125
- 5~22byte

a. number
    - 정수, 실수
    - 1x10^-130 ~ 9.9999x10^125

b. number(prrecision)
    - 정수만 저장 가능
    - 실수는 반올림하여 정수로 저장됨
    - precision : 저장 가능한 자릿수(눈에 보이는 자릿수)
    - -999 ~ +999

c. number(precision, scale)
    - 정수, 실수
    - precision : 저장 가능한 자릿수(※scale도 포함함)
    - scale: 소수이하 자릿수(%.1f -> scale: 1) > 반올림 
        > 고정 확보(소수점 이하를 다 채우지 않더라도 해당 scale만큼 자리를 차지함.

- NUMBER[ (p [, s]) ]  -- p : 1~38 / s : -84~127
    ~ NUMBER(4) : 최대 4자로 이루어진 숫자
    ~ NUMBER(6,2) : 소수점 2자리를 포함하는 최대 6자리의 숫자(소수점 셋째 자리에서 반올림)
    ~ NUMBER(6,-2) : 소수점 -2자리에서 반올림하는 최대 6자리의 숫자
    ~ NUMBER: NUMBER(38,*) > Maximum 값인 38이 들어감
    ~ NUMBER(*,5) : 소수점5자리를 포함하는 최대 38자리의 숫자


CREATE  TABLE MEMBER
(
    ID          VARCHAR2(50),
    PWD         VARCHAR2(50),
    NAME        VARCHAR2(50),
    GENDER      NCHAR(2), --남성, 여성
    AGE         NUMBER(3),
    BIRTHDAY    CHAR(10), --2000-01-02
    PHONE       CHAR(13), --010-1234-2345
    REGDATE     DATE
);

// 날짜(Date) 형식

a. date
    - 년월일시분초
    - 기원전 4712년 1월 1일 ~ 9999년 12월 31일

b. timestamp
    -년월일시분초 + 밀리초 + 나노초

c. interval
    - 시간
    - 틱값 저장용

 

- 년-월-일까지 표현
    ~ DATE  

- 시-분-초까지 표현
    ~ TIMESTAMP : NLS_TIMESTAMP_FORMAT 파라미터에 명시된 값을 따름.
    ~ TIMESTAMP WITH TIME ZONE : NLS_TIMESTAMP_TZ_FORMAT 파라미터에 명시된 값을 따름.
    ~ TIMESTAMP WITH LOCAL TIME ZONE : NLS_TIMESTAMP_FORMAT 파라미터에 명시된 값을 따름.


select sysdate from dual;

// 이진 데이터 형식

- 비 텍스트 데이터
- 이미지, 영상, 파일 등..
    ~ 게시판(첨부파일), 푀원가입(사진) > 문자열로 저장(파일명만 저장) > hong.png

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

[Oracle] 데이터 조작(DML)  (0) 2023.02.10
[Oracle] 테이블 수정  (0) 2023.02.08
[Oracle] 테이블 생성  (0) 2023.02.07
[Oracle] 데이터베이스 생성  (0) 2023.02.07
[Oracle] 설치 및 환경설정, 정의  (0) 2023.02.07