🧩 데이터 타입이란?
오라클에서 **데이터 타입(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) |
CODE INTEGER | CODE NUMBER(38) | 정수용 |
CODE FLOAT(n) | 부동 소수점 숫자 (n은 binary precision) | CODE FLOAT(126) |
🔹 실전 팁
- 금액, 환율: 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 컬럼은 직접 지원되지 않음
- 데이터 타입 선택은 정합성, 용량, 성능에 직결된다.
"정확한 데이터 타입 선택은 데이터베이스 품질을 결정짓는 첫 단추다."