본문 바로가기
Database

오라클 데이터 타입: VARCHAR2, NUMBER, DATE 이해하기

by 굿센스굿 2024. 12. 3.
반응형


데이터베이스에서 데이터를 저장하고 처리하는 데 있어 데이터 타입의 정확한 이해는 매우 중요합니다. 특히 오라클(Oracle) 데이터베이스는 다양한 데이터 타입을 제공하며, 그중에서도 VARCHAR2, NUMBER, DATE는 가장 자주 사용되는 기본적인 데이터 타입입니다. 이 글에서는 각각의 특징과 활용 방법을 구체적으로 알아보고, 예제를 통해 실전에서의 활용 방안을 소개합니다.


1. VARCHAR2: 가변 길이 문자 데이터

VARCHAR2는 가변 길이의 문자 데이터를 저장하는 데 사용됩니다.

  • 특징
    • 최대 4000 바이트까지 저장 가능 (12c 이상에서는 최대 32767 바이트로 확장 가능).
    • 저장된 데이터의 실제 길이만큼 공간을 사용.
    • 공백 처리에 민감하며, 공백은 데이터로 간주됩니다.
    • NULL 값을 저장할 수 있음.
  • 사용 예시
    • 사용자 이름, 이메일 주소, 설명과 같이 길이가 가변적인 문자열 데이터에 적합.
  • 예제위 예제에서는 user_name 필드가 최대 50자의 문자 데이터를 저장하며, VARCHAR2로 선언하여 공간을 효율적으로 관리합니다.
  • CREATE TABLE users ( user_id NUMBER PRIMARY KEY, user_name VARCHAR2(50), -- 사용자 이름 (최대 50자) email VARCHAR2(100) -- 이메일 주소 (최대 100자) );

2. NUMBER: 숫자 데이터

NUMBER 데이터 타입은 정수와 소수를 모두 표현할 수 있어 숫자 데이터를 저장하는 데 사용됩니다.

  • 특징
    • 최대 38자리의 정밀도 지원.
    • NUMBER(p, s) 형태로 정의 가능:
      • p: 정밀도(전체 자리수, 최대 38).
      • s: 소수점 이하 자리수(음수 가능).
    • 다양한 숫자 계산에서 정밀도를 보장.
  • 사용 예시
    • 가격, 인벤토리 수량, 학점 등과 같이 정밀한 숫자 데이터를 다룰 때 적합.
  • 예제위 예제에서는 price 필드가 소수점 이하 두 자리를 포함하는 금액을 표현하며, stock은 최대 다섯 자리의 정수를 저장합니다.
  • CREATE TABLE products ( product_id NUMBER PRIMARY KEY, price NUMBER(10, 2), -- 가격 (최대 10자리, 소수점 이하 2자리) stock NUMBER(5) -- 재고 수량 (최대 5자리 정수) );

3. DATE: 날짜와 시간 데이터

DATE 데이터 타입은 날짜와 시간 정보를 저장하는 데 사용됩니다.

  • 특징
    • 날짜와 시간 정보를 모두 포함 (연도, 월, 일, 시, 분, 초).
    • 기본 형식: YYYY-MM-DD HH24:MI:SS.
    • 날짜 연산이 가능 (예: 날짜 차이 계산).
  • 사용 예시
    • 주문 날짜, 생성 시간, 마지막 로그인 시간 등과 같은 데이터에 적합.
  • 예제위 예제에서는 order_date와 delivery_date 필드에 날짜와 시간을 저장하여, 주문과 배송 간의 간격을 계산할 수 있습니다.
  • CREATE TABLE orders ( order_id NUMBER PRIMARY KEY, order_date DATE, -- 주문 날짜 delivery_date DATE -- 배송 예정 날짜 );

4. VARCHAR2, NUMBER, DATE의 활용 비교

세 가지 데이터 타입은 각각 고유한 역할을 가지며, 적절한 데이터 타입을 선택하면 데이터 저장 및 조회 성능이 최적화됩니다.

  • VARCHAR2는 텍스트 기반 데이터에 적합하며, 길이가 고정되지 않은 데이터를 처리할 때 유용합니다.
  • NUMBER는 정밀도가 중요한 숫자 데이터(가격, 수량 등)를 처리하는 데 필수적입니다.
  • DATE는 시간 및 날짜 계산이 필요한 모든 비즈니스 로직에서 활용됩니다.

5. 실제 사용 시 주의사항

  1. VARCHAR2와 CHAR의 차이점
    • CHAR는 고정 길이 문자 타입으로, 지정된 길이만큼 항상 저장소를 차지합니다.
    • 반면, VARCHAR2는 저장된 데이터 길이에 따라 공간을 사용하므로 더 효율적입니다.
  2. NUMBER의 정밀도
    • 너무 큰 정밀도는 불필요한 저장소 낭비를 초래할 수 있습니다. 적절한 p와 s 값을 설정하세요.
  3. DATE 형식 지정
    • 기본적으로 NLS_DATE_FORMAT 설정에 따라 출력 형식이 결정됩니다. 필요에 따라 TO_CHAR와 TO_DATE 함수를 활용하세요.
    SELECT TO_CHAR(order_date, 'YYYY-MM-DD') AS formatted_date
    FROM orders;
    

6. 종합 예제

다음은 위 세 가지 데이터 타입을 함께 사용하는 예제입니다.

CREATE TABLE transactions (
    transaction_id NUMBER PRIMARY KEY,
    user_name VARCHAR2(50),
    amount NUMBER(10, 2),
    transaction_date DATE
);

INSERT INTO transactions (transaction_id, user_name, amount, transaction_date)
VALUES (1, '홍길동', 15000.75, TO_DATE('2024-12-01', 'YYYY-MM-DD'));

SELECT user_name, amount, TO_CHAR(transaction_date, 'YYYY-MM-DD') AS transaction_date
FROM transactions;

위 예제는 사용자 이름, 거래 금액, 거래 날짜를 저장하고 조회하는 간단한 트랜잭션 시스템을 구현합니다.


결론

오라클의 데이터 타입인 VARCHAR2, NUMBER, DATE는 데이터베이스 설계에서 필수적인 구성 요소입니다. 데이터의 특성과 활용 목적에 따라 적절한 데이터 타입을 선택하면 성능과 저장소 효율을 모두 극대화할 수 있습니다. 이 글에서 소개한 예시를 바탕으로 실제 비즈니스 로직에 적용해 보세요!

반응형