[Database] 데이터 타입
1. 데이터 타입
1.1. 숫자형 데이터
BINARY_FLOAT와 BINARY_DOUBLE이 있다. 각각 4Byte, 8Byte 데이터를 저장할 수 있다. BINARY_FLOAT : 4Byte
BINARY_DOUBLE : 8Byte
그러나 저 둘은 잘 안쓰이고 숫자형 자료형으로 NUMBER를 자주 쓴다. NUMBER() 이런 형식으로 쓴다. NUMBER(7, 2)면 7자리 정수에 2자리 소수점을 가진다.
1.2. 문자형 데이터
문자형 데이터에는 CHAR 가 있다. 최대 2000Byte까지만 가질 수 있다. 문자형은 고정된 자리 수를 가지기 때문에 CHAR(8)이라 선언하면 딱 8자리만 데이터가 들어갈 수 있다. NCHAR라는 것도 있는데 한글이나 일본어같은 비 영어권 문자를 입력할때 유리한 자료형이다. CHAR와 VARCHAR는 영어권을 기준으로 되어 있다.
VARCHAR는 8자리로 선언했는데 2자리만 들어오면 나머지 6자리는 자리를 차지하지 않는 가변적인 자료형이다. 요새는 컴퓨터 성능이 좋아져서 CHAR보다 거의 다 VARCHAR로 선언한다. NCHAR처럼 NVARCHAR도 있다. 마찬가지로 비영어권 문자를 지원하는 자료형이다. 가장 자주 쓰이는 것은 CHAR와 VARCHAR이기때문에 이 둘만 알아도 무방하다.
대용량 텍스트를 저장할때 CLOB을 쓴다. 최대 128TB까지 저장이 가능하다. Character Long Object의 약자이다. 그리고 NCHAR, NVARCHAR처럼 한국어나 중국어를 지원하기 위한 NCLOB이 있다.
바이너리 자료형으로 BLOB과 BFILE이 있다. BLOB은 이진 데이터를 128TB까지 저장할 수 있다. 주로 IMAGE나 MOVIE를 저장할 때 쓴다. 따로 파일 서버를 안가춰도 되고 파일의 안정성이 높아지지만 데이터베이스 사용소 비용이 많이들어 대기업에서밖에 못한다. BFILE도 BLOB과 같은 거지만 최대 4GB까지만 가능한게 차이이다.
1.3. 날짜 데이터
가장 많이 쓰는 날짜 데이터는 DATA로 최대 저장크기가 7Byte이다. 밀리초까지 저장하는 TIMESTAMP도 있는데 11Byte까지 저장 가능하다. TIMESTAMP WITH TIME ZONE는 나라별 시간대 시간을 저장할때 쓴다.
2. Unicode와 N의 관계
NVARCHAR와 NCHAR 둘다 Unicode와 연관된 자료형이다. Unicode는 UTF-8, EUC-KR 등 한국어 중국어를 편리하게 문자열 인코딩하기 위해 나온 것이다. 한글과 영어가 둘 다 들어갈 때 NVARCHAR와 NCHAR가 굉장히 유리하다. 그러나 데이터 공간을 VARCHAR나 CHAR보다 더 많이 차지한다. 때문에 국내용으로만 쓴다든가 아니면 영어권에서만 사용되는 시스템이라면 VARCHAR, CHAR를 쓰는 것이 더 효율적이다. 데이터 공간은 결국 비용으로 연결되기 때문이다.