새소식

반응형
250x250
💾 Database

[Database] 데이터 타입(속성)의 종류

  • -
728x90
반응형
데이터 타입

 

 

데이터 타입이란 컬럼이 저장되는 데이터 유형을 말한다.

컬럼의 속성이라고도 할 수 있다.

종류는 크게 문자, 숫자, 날짜로 나뉘고, 그 외로 LOB 타입이 있다.

 

 

 

문자 데이터 타입

 

이름 설명
CHAR(크기 (BYTE/CHAR)) 고정길이 문자
VARCHAR2 (크기 (BYTE/CHAR)) 가변길이 문자
NCHAR (크기) 고정길이 유니코드 문자(다국어 입력 가능)
NVARCHAR2 (크기) 가변길이 유니코드 문자(다국어 입력 가능)

 

고정길이 문자와 가변길이 문자의 차이는,

고정길이 문자는 크기를 정하면 그보다 작은 크기의 문자를 저장해도 기존에 설정한 크기로 고정된다.

예를 들어, 크기를 5BYTE로 정의하고 크기가 3BYTE인 'ABC'라는 문자를 저장했을 때,

실제 용량은 5BYTE를 차지하게 된다.

 

반면 가변길이 문자는 크기를 정해도 실제 저장된 문자에 따라 크기가 변한다.

예를 들어, 크기를 5BYTE로 정의하고 크기가 3BYTE인 'ABC'라는 문자를 저장했을 때,

실제 용량도 3BYTE를 차지하게 된다.

때문에 효율성이 더 우수하므로 문자 데이터 저장에는 주로 VARCHAR2를 사용한다.

 

CF) UTF-8

컴퓨터가 문자를 저장하는 방식은 여러 가지가 있는데, 그중 하나가 UTF-8이다.

UTF-8은 숫자, 영어는 1BYTE, 한글은 2BYTE로 인식한다.

따라서 컬럼 속성을 VARCHAR2(4)라고 정의했을 때,

숫자, 영어는 4글자를 저장할 수 있지만, 한글로는 2글자만 저장할 수 있다.

CHAR, VARCHAR2의 디폴트 정의 값이 BYTE이기 때문이다.

만약 한글도 똑같이 4글자를 저장하고 싶다면, VARCHAR2(4 CHAR)와 같이 정의하면 된다.

 

 

숫자 데이터 타입

 

이름 설명
INT 정수형
NUMBER(유효자릿수, 소수점) 실수형 / 유효자릿수 범위 : 1~38
FLOAT(이진수 기준 유효자릿수) 실수형 / 유효자릿수 범위 : 1~128

 

NUMBER 타입이 가장 많이 쓰이는데, 예시와 같이 설명해 보겠다.

유효자릿수숫자의 전체 자리수를 말하는 것이고,

소수점은 소수점 몇 자리까지 나타낼 것인지 정의할 수 있다.

 

예를 들어 NUMBER(5,2)라고 정의했을 때, 총 5자리 숫자이며 소수점 둘째 자리까지 나타낸다는 뜻이다.

123.12와 같은 숫자라고 할 수 있겠다.

그렇다면 만약 123.125와 같은 숫자를 입력한다면 어떤 결과가 나올까?

결과는 소수점 셋째 자리에서 반올림된 123.13이 저장된다.

 

반대로 NUMBER(5,-2)라고 정의한다면, 총 5자리 숫자이며 백의 자리까지 나타낸다는 뜻이다.

만약 123.12155.55를 입력한다면 어떤 결과가 나올까?

결과는 십의 자리에서 버림한 100, 반올림한 200이 저장된다.

 

만약 반올림으로 인해 총 자리수가 정의한 수보다 많아진다면 오류가 발생하니 참고하자.

 

만약 NUMBER(2,4)라고 정의한다면, 총 2자리 숫자라는 뜻이 아니라,

소수점 이하 네번째 자리까지 유효숫자가 2자리라는 뜻이 된다.

0.0012 같은 숫자를 말한다.

 

 

 

날짜 데이터 타입

 

이름 설명
DATE 연, 월, 일, 시, 분, 초 입력 가능
TIMESTAMP 연, 월, 일, 시, 분, 초, 밀리초 입력 가능

 

두 데이터 타입 중 TIMESTAMP가 좀 더 세부적인 초까지 입력 가능하다.

 

 

LOB( Large Object ) 데이터 타입

 

이름 설명
CLOB 문자형 대용량 객체
NCLOB 문자형 대용량 객체, 다국어 지원
BLOB 이진형 대용량 객체

 

LOB 데이터 타입은 문자, 숫자, 날짜 데이터에 비해

크기가 매우 큰 텍스트, 그래픽, 이미지, 사운드 데이터를 저장하는 데 사용된다.

CLOB, NCLOB는 문자형 대용량 데이터 저장에 사용되고,

BLOB는 그래픽, 이미지, 동영상 등 데이터 저장에 사용된다.

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.