타입(Type) 참조 안내서
데이터 타입에 대한 참조 안내서입니다.
O2types extension 설치 후 신규 데이터 타입들이 추가되며, 아래의 2가지 형식으로 사용하여야 합니다.
1. search_path를 설정하지 않은 경우
스키마(기본 oracle)의 이름을 타입 앞에 추가하여 사용합니다.
{schema_name}.{type_name}
-- 예시) o2types extension 설치 후, 새로 추가된 date라는 타입을 사용합니다.
-- create table T (col1 oracle.date);
2. search_path를 설정한 경우
스키마(기본 oracle)를 가장 높은 우선순위 search_path로 설정한 경우, 스키마를 생략하고 사용할 수 있습니다.
-- 현재 접속 세션에서 스미카 'oracle'를 가장 우선순위 높은 search_path로 설정합니다.
set search_path to oracle, public;
{type_name}
-- 예시) o2types extension 설치 후, 새로 추가된 date라는 타입을 사용합니다.
-- create table T (col1 date);아래 사양들은 스키마를 생략한 형태로 기술합니다.
DATE
DATE 타입은 특정 날짜와 초 단위까지의 시간을 표현하는 데이터 타입입니다. TIMESTAMP(0)과 표현 범위가 동일합니다.
DATE 타입은 다음과 같은 특징이 있습니다.
연도, 월, 일, 시, 분, 초를 표현할 수 있습니다.
연도는 BC 4,713 ~ AD 294,276까지 표현할 수 있습니다.
시간은 24시간 단위로 표현됩니다.
VARCHAR2
VARCHAR2 타입도 CHARACTER VARYING 타입과 마찬가지로 문자열 길이가 일정하지 않은 가변 길이를 갖습니다.
VARCHAR2 타입은 다음과 같은 특징이 있습니다.
문자열은 최대 10,485,760 byte(=10MB)까지 선언할 수 있습니다. 변환된 문자열의 길이가 해당 크기를 넘으면 에러가 발생합니다.
문자열의 크기를 지정하지 않은 경우 Postgresql native type인 TEXT 처럼 동작합니다.
문자열의 길이는 byte를 기준으로 지정할 수 있습니다.
SQL 문장에서 VARCHAR2 타입의 값을 표현할 때에는 항상 작은 따옴표(' ')를 사용합니다.
Postgresql의 기본 동작을 고려하여, ORACLE과는 다르게 빈 문자열('')과 NULL을 다른 값으로 간주합니다.
다음은 VARCHAR2 타입을 설명하는 예입니다.
위 예제에서 보듯이 EMP_NAME 컬럼은 10byte의 문자열 길이를 갖습니다. 예를 들어 'Peter' 문자열이 입력되었다면 'Peter' 문자열이 저장됩니다. 다시 말해 EMP_NAME 컬럼의 문자열 길이는 10byte로 선언되었지만 실제로 저장된 문자열 길이는 5byte입니다. 이처럼 VARCHAR2 타입은 선언된 문자열 길이의 범위 내에서 입력된 문자열 길이와 동일한 길이를 갖습니다.
NVARCHAR2
NVARCHAR2 타입은 유니코드 문자열을 저장하기 위한 타입입니다. 문자열 길이가 일정하지 않은 가변 길이를 갖는다는 특징이 있습니다.
NVARCHAR2 타입은 다음과 같은 특징이 있습니다.
기본적으로 VARCHAR2 타입과 유사하지만, 문자열의 길이가 문자 기준입니다.
데이터베이스에 저장되는 타입의 길이는 다국어 문자 집합에 따라 달라집니다. 예를 들어 UTF8인 경우엔 size의 최대 3배, UTF16인 경우엔 size의 최대 2배가 됩니다.
NVARCHAR2 타입의 문자열의 최대 길이는 10,485,760자입니다.
SQL 문장에서 NVARCHAR2 타입의 값을 표현할 때에는 항상 작은 따옴표(' ')를 사용합니다.
Postgresql의 기본 동작을 고려하여, ORACLE과는 다르게 빈 문자열('')과 NULL을 다른 값으로 간주합니다.
CLOB
CLOB(Character Large Object)은 대용량의 문자열 데이터를 저장하기 위한 데이터 타입입니다.
특징
내부적으로 PostgreSQL의
text타입을 기반으로 합니다.최대 크기는 바이트수 기준으로 약 1 GB입니다.
UTF-8 멀티바이트 문자(예: 한글, 일본어, 이모지 등)를 사용할 경우, 최대 문자열 길이가 싱글바이트 문자인 영문보다 훨씬 더 적어질 수 있음에 유의해야 합니다.
문자열 결합 연산자
||를 제공합니다.SQL 문장에서 CLOB 타입의 값을 표현할 때에는 항상 작은따옴표(' ')를 사용합니다.
사용 예시
BLOB
BLOB(Binary Large Object)은 이진 데이터를 저장하기 위한 Oracle의 데이터 타입입니다.
BLOB은 일반적으로 이미지, 바이너리 파일, 실행 파일 등 다양한 형태의 이진 데이터를 저장하는 데 사용됩니다.
특징
내부적으로 PostgreSQL의
bytea타입을 기반으로 합니다.최대 크기는 PostgreSQL
bytea타입의 한계와 동일하게 약 1GB입니다.가공 함수, 연산자 등은 기본적으로 PostgreSQL
bytea타입의 연산을 그대로 사용할 수 있습니다.SQL 문장에서 BLOB 타입의 값을 표현할 때에는 항상 작은따옴표(' ')를 사용하며, 이진 데이터를 직접 SQL에 넣을 경우 이스케이프 처리(
E’’)가 필요합니다.예)
\xDEADBEEF를 SQL에서 표현하는 BLOB →E'\\xDEADBEEF'::blob
사용 예시
Last updated
