🧩 데이터 타입이란?

오라클에서 **데이터 타입(Data Type)**은 각 컬럼에 저장할 수 있는 값의 종류와 형식을 정의한다.
정확한 타입 선택은 저장 공간, 성능, 정렬/검색 로직에 큰 영향을 준다.

1️⃣ 문자형 (Character)

데이터 타입설명최대 길이
CODE
CHAR(n)
고정 길이 문자 (공백 포함 저장)2000 bytes
CODE
VARCHAR2(n)
가변 길이 문자 (실제 길이만 저장)4000 bytes
CODE
NCHAR(n)
고정 길이 유니코드 문자2000 bytes
CODE
NVARCHAR2(n)
가변 길이 유니코드 문자4000 bytes
CODE
CLOB
대용량 텍스트 (Character Large Object)4GB
🔹 실전 팁
  • 고정 길이가 반드시 필요한 경우가 아니라면 대부분 VARCHAR2를 사용
  • CHAR은 공백 패딩되므로 주의
  • 유니코드 다국어 처리에는 NCHAR, NVARCHAR2 사용

2️⃣ 숫자형 (Numeric)

데이터 타입설명예시
CODE
NUMBER(p, s)
정밀한 숫자 표현 (p: 전체 자리수, s: 소수점 이하 자리수)
CODE
NUMBER(10,2)
→ 최대 10자리, 소수점 2자리
CODE
INTEGER
CODE
NUMBER(38)
과 동일
정수용
CODE
FLOAT(n)
부동 소수점 숫자 (n은 binary precision)
CODE
FLOAT(126)
≈ DOUBLE
🔹 실전 팁
  • 금액, 환율: NUMBER(13,2) 등으로 소수점 이하 정밀도 확보
  • 정수 타입은 내부적으로도 NUMBER로 처리됨

3️⃣ 날짜/시간형 (Date & Time)

데이터 타입설명지원 범위
CODE
DATE
날짜 + 시간 (초 단위까지)4712 B.C ~ 9999 A.D
CODE
TIMESTAMP
날짜 + 시간 (나노초 단위까지 정밀도)최대 9자리 초과 정밀도
CODE
TIMESTAMP WITH TIME ZONE
타임존 정보 포함표준 시간 관리
CODE
TIMESTAMP WITH LOCAL TIME ZONE
세션 기준 타임존 자동 변환다국적 시스템에 유리
CODE
INTERVAL YEAR TO MONTH
두 날짜 간 간격(연/월 단위)
CODE
INTERVAL '2-6' YEAR TO MONTH
CODE
INTERVAL DAY TO SECOND
두 날짜 간 간격(일/초 단위)
CODE
INTERVAL '5 04:12:10' DAY TO SECOND
🔹 실전 팁
  • 단순 날짜: DATE
  • 로그 기록, 고해상도 시간: TIMESTAMP
  • 글로벌 서비스: WITH TIME ZONE 또는 WITH LOCAL TIME ZONE

4️⃣ 이진 데이터형 (Binary / Large Object)

데이터 타입설명최대 크기
CODE
RAW(n)
고정 길이 이진 데이터최대 2000 bytes
CODE
LONG RAW
가변 길이 이진 데이터최대 2GB
CODE
BLOB
Binary Large Object (예: 이미지, PDF, 바이너리 파일)최대 4GB
🔹 실전 팁
  • 작은 해시값, 바이너리 키: RAW(16)
  • 이미지/문서 저장: BLOB
  • 파일은 가능한 한 외부 저장소에 두고 FILE URI만 관리하는 것도 고려

5️⃣ 논리형 / Boolean

Oracle에는 BOOLEAN 타입이 테이블 컬럼으로는 직접 사용 불가하다. 단, PL/SQL 내에서는 변수 타입으로 사용 가능하다.
컨텍스트사용 가능 여부
테이블 컬럼❌ (사용 불가)
PL/SQL 변수✅ (
CODE
BOOLEAN
타입 가능)
Boolean 값을 저장하려면 일반적으로 CHAR(1) 또는 NUMBER(1)을 사용해서 'Y' / 'N', 1 / 0 등으로 표현한다.

6️⃣ ROWID와 UROWID

타입설명
CODE
ROWID
데이터가 실제로 저장된 물리적 주소
CODE
UROWID
확장된 ROWID (IOT, 외부 테이블 포함)
ROWID는 특정 행을 매우 빠르게 조회할 수 있도록 해주므로 성능 튜닝에서도 자주 활용된다.

🧠 데이터 타입 선택 팁

목적추천 타입
사용자 이름, 이메일
CODE
VARCHAR2(100)
가격, 금액
CODE
NUMBER(13,2)
로그인 시간
CODE
TIMESTAMP
프로필 이미지
CODE
BLOB
약관 동의 여부
CODE
CHAR(1)
(
CODE
'Y'
,
CODE
'N'
)

🛠 데이터 타입 확인 SQL

테이블 구조를 확인하려면:
SQL
DESC 테이블명;
또는:
SQL
SELECT column_name, data_type, data_length FROM user_tab_columns WHERE table_name = 'MY_TABLE';

📌 마무리 요약

  • 문자 데이터 → VARCHAR2, 유니코드는 NVARCHAR2
  • 숫자 데이터 → NUMBER(p, s)
  • 날짜/시간 → DATE or TIMESTAMP
  • 바이너리 → RAW, BLOB
  • Boolean 컬럼은 직접 지원되지 않음
  • 데이터 타입 선택은 정합성, 용량, 성능에 직결된다.
"정확한 데이터 타입 선택은 데이터베이스 품질을 결정짓는 첫 단추다."