Olacle DB - Character 데이터 형식
문자열 데이터 형식
CHAR - 고정길이 문자열 데이터
CHAR(n) : 고정 길이 문자열 데이터 타입이며, n은 최대 길이를 나타낸다. CHAR 타입으로 저장된 문자열은 항상 n 바이트 크기를 가지며, 입력한 문자열이 n보다 짧으면 나머지 공간은 공백으로 채워진다.
예를 들어, CHAR(10)으로 지정된 필드에 "hello"( 5바이트) 라는 문자열을 저장하면, "hello " (10바이트)로 저장된다.
VARCHAR2 - 가변길이 문자열 데이터
VARCHAR2(n): 가변 길이 문자열 데이터 타입이며, n은 최대 길이를 나타낸다.. VARCHAR2 타입으로 저장된 문자열은 입력한 문자열의 크기에 따라 저장 공간이 자동으로 조정된다.
예를 들어, VARCHAR2(10)으로 지정된 필드에 "hello"라는 문자열을 저장하면, 그대로 "hello" (5바이트)로 저장된다.
이로 인해 저장 공간을 더 효율적으로 사용할 수 있다.
VARCHAR2는 CHAR와 달리 입력한 데이터의 길이에 따라 저장되므로, 입력한 데이터의 일관성도 더 높아지며 저장된 데이터를 검색하거나 처리할 때, 데이터의 길이를 무시할 수 있어서 검색 및 처리 속도가 더 빠르다.
NCHAR, NVARCHAR2
Oracle에서 NCHAR과 NVARCHAR2는 Unicode 문자열 데이터를 저장하는 데 사용되는 데이터 타입이다.
NCHAR은 고정 길이의 Unicode 문자열 데이터를 저장하고, NVARCHAR2는 가변 길이의 Unicode 문자열 데이터를 저장한다. 이러한 데이터 타입은 주로 다국어 지원 시스템에서 사용되는데. Unicode 문자열 데이터는 다양한 언어와 문자를 지원하는 국제적인 문자셋이다.
예를 들어, 한글, 중국어, 일본어, 영어, 프랑스어 등의 다국적 문자를 모두 지원한다.
NCHAR 및 NVARCHAR2를 사용하면 서로 다른 언어를 사용하는 사용자들 간에 데이터를 공유할 때 발생할 수 있는 문자 인코딩 문제를 방지할 수 있다.
NCHAR 및 NVARCHAR2는 CHAR 및 VARCHAR2와는 달리 유니코드 문자셋으로 저장되기 때문에 저장 공간이 더 많이 필요하다. 그러나 데이터베이스 내에서 문자열 처리가 일어나는 경우, NCHAR 및 NVARCHAR2 데이터 타입은 문자셋 변
환을 거치지 않고 바로 처리할 수 있어 처리 속도가 더 빠르다.
따라서, 다국어 지원 시스템에서는 주로 NCHAR 및NVARCHAR2를 사용하며, 이러한 데이터 타입은 데이터 저장 및 처리에 대한 안정성과 확장성을 보장한다.
LONG
Oracle의 LONG 데이터 타입은 가변 길이의 문자열 데이터를 저장할 수 있는 데이터 타입이다.
LONG은 최대 길이가 2GB로 매우 큰 문자열을 저장할 수 있지만, Oracle에서는 이제 이 데이터 타입을 지원하지 않는다.
이는 LONG 데이터 타입이 여러 가지 문제를 발생시킬 수 있기 때문이.
대신에 Oracle은 CLOB (Character Large OBject) 데이터 타입을 사용하여 대용량 문자열 데이터를 저장한다. CLOB는 VARCHAR2와 유사하지만 더 많은 저장 용량을 제공한다. 따라서 LONG 대신 CLOB를 사용하는 것이 좋다.
CLOB
CLOB 타입은 대개 텍스트 파일이나 문서, HTML 페이지 등과 같은 대용량의 문자 데이터를 저장하기 위해 사용된다.
예를 들어, 사용자가 작성한 긴 문서나 게시글을 저장할 때 사용될 수 있으며,
CLOB 타입은 VARCHAR2 타입과 비슷하게 작동하지만 CLOB 타입은 VARCHAR2보다 더 큰 용량을 저장할 수 있다.
CLOB 타입의 최대 크기는 VARCHAR2 타입과는 달리 4GB까지 저장할 수 있다. 따라서, CLOB 타입은 대용량의 문자 데이터를 저장하기 위한 최적의 데이터 타입이다.
숫자형 데이터형식
NUMBER
NUMBER 데이터 타입은 정밀한 숫자 데이터 정수,실수형 모두 저장하는 데 사용된다.
NUMBER는 기본적으로 가변 길이 숫자 데이터 타입으로, 데이터의 정밀도와 소수점 위치를 지정할 수 있.
즉, 저장될 숫자의 정밀도가 높을수록 소수점 이하 자리수가 늘어나며. NUMBER 데이터 타입을 사용하여 다양한 숫자형식을 저장할 수 있다.
예를 들어, NUMBER(10)은 최대 10자리 숫자를 저장하며, NUMBER(10, 2)는 소수점 이하 2자리까지의 숫자를 저장한다.
INTEGER
NTEGER는 숫자형 데이터 타입 중 하나로, 정수형 값을 저장하는 데 사용된다.
Oracle에서는 INTEGER 타입을 기본적으로 지원하지 않는다. 대신, NUMBER 타입을 사용하여 정수형 값을 저장할 수 있다.
DATE와 TIMESTAMP
DATE
DATE는 1년 중의 날짜, 시, 분, 초를 포함하는 일반적인 날짜와 시간 값이다.
DATE 값은 기본적으로 7바이트의 이진 데이터로 저장되며, 이 값은 날짜와 시간 정보를 나타내는 숫자로 구성된다.
Oracle에서는 DATE 값이 1초 이하의 정확도를 가질 수 있지만, 실제로는 1/100 초까지의 정확도를 가질 수 있다.
TIMESTAMP
TIMESTAMP는 DATE와 유사하지만, 초 이하의 정밀도를 가진 데이터 타입이다.
TIMESTAMP 값은 7바이트에서 11바이트의 이진 데이터로 저장되며. DATE와 달리, 초 이하의 정밀도를 가지므로 정밀한 시간 측정이 필요한 경우에 사용된다.
또한 Oracle에서는 TIMESTAMP WITH TIME ZONE 타입도 제공한. 이 타입은 TIMESTAMP와 유사하지만, 시간대 정보도 함께 저장할 수 있다. 시간대 정보를 포함하여, 서로 다른 지역의 시간 값을 비교하고 조작하는 경우에 유용하다.