Oracleのデータ型を徹底解説!数値・文字列・日付・LOBの違いと使い分け

オラクルデータベースの基本

Oracleデータベースでテーブルを作成する際には、各列に対して「どのようなデータを格納するか」を定義する必要があります。この定義に使われるのが「データ型(Data Type)」です。

この記事では、Oracleで使用される主なデータ型について、初心者にもわかりやすく、分類ごとに図解付きで丁寧に説明します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


データ型とは?

データ型とは、カラムに格納できるデータの種類やサイズを定義するものです。適切なデータ型を選ぶことで、以下のようなメリットがあります:

  • ストレージ効率が向上する
  • 型不一致のエラーを防止できる
  • パフォーマンスが向上する可能性がある

主なデータ型の分類

Oracleのデータ型は、大きく以下のように分類されます:

┌──────────────┐
│ Oracleデータ型 │
└──────────────┘

┌────────┬────────┬────────┬────────┐
│ 数値型 │ 文字列型 │ 日付型 │ LOB型 │
└────────┴────────┴────────┴────────┘

以下では、それぞれのカテゴリについて詳しく見ていきます。


数値型(Numeric Data Types)

数値を扱う列に使用します。

NUMBER型(最も基本的な数値型)

col_name NUMBER(5, 2)
  • 5は全体の桁数(precision)
  • 2は小数点以下の桁数(scale)
  • 最大精度:38桁

NUMBER(5,2)999.99 まで格納可能

使用例

CREATE TABLE product (
id NUMBER(3),
price NUMBER(7,2)
);

POINT:整数のみ格納したい場合でも、NUMBER型を使用します(OracleにはINTBIGINTの独自型はありません)。


文字列型(Character Data Types)

文字列を格納する列に使用します。

CHAR型(固定長)

col_name CHAR(10)
  • 常に10文字分の領域を確保
  • 足りない部分はスペースで埋められる

VARCHAR2型(可変長)

col_name VARCHAR2(10)
  • 実際の文字数だけを格納
  • 最大4000バイト(※12c以降でMAX_STRING_SIZE=EXTENDEDなら32767バイトまで可)

使用例

CREATE TABLE employee (
emp_id NUMBER,
emp_name VARCHAR2(50),
emp_type CHAR(1)
);

POINT:文字数が可変の場合は VARCHAR2 の使用が一般的です。


日付型(Date/Time Data Types)

日付や時刻を格納する列に使用します。

DATE型

  • 年月日、時分秒まで格納可能(西暦4712年~9999年まで)
col_name DATE

TIMESTAMP型

  • ミリ秒まで精度を持つ日付型
  • TIMESTAMP(3) → ミリ秒を3桁まで記録
col_name TIMESTAMP(6)

使用例

CREATE TABLE orders (
order_id NUMBER,
order_date DATE,
updated_at TIMESTAMP(3)
);

POINT:ログやトランザクションでの高精度な時間記録には TIMESTAMP を使用。


LOB型(Large Object Types)

大量のデータ(テキストやバイナリ)を格納するための型です。

データ型説明
CLOB大量の文字データ(例:文書など)
BLOBバイナリデータ(例:画像や動画)

使用例

CREATE TABLE documents (
doc_id NUMBER,
doc_text CLOB,
doc_file BLOB
);

POINT:LOBは内部的に別セグメントに格納されます。サイズが大きいため、パフォーマンスや管理に注意が必要です。


データ型選定のポイント

以下の観点からデータ型を適切に選ぶことが重要です:

  • 数値なのか文字列なのか
  • 固定長か可変長か
  • 日付の精度は必要か
  • 文字コード(マルチバイト)によるバイト数に注意

データ型とストレージの関係

テーブル設計時には、データ型に応じたストレージサイズも意識しましょう。

VARCHAR2(100) ← 実際に10文字なら10文字分しか使われない
CHAR(100) ← 必ず100文字分使われる(パディングされる)

このように、同じ「100」として定義しても、型によって消費されるサイズが異なります。


よくある誤解と注意点

誤解正しい情報
INT型が使えると思っていたOracleにはINT型がない。NUMBER型を使う
VARCHAR型を使いたいOracleではVARCHARではなくVARCHAR2を使用(非推奨)
CHARの方が軽量で速いと思っていた実際には無駄な領域を使うことが多く、VARCHAR2の方が適切

まとめ

種類主なデータ型用途
数値型NUMBER整数・小数を格納
文字列型CHAR / VARCHAR2固定長・可変長の文字列を格納
日付型DATE / TIMESTAMP日付や時刻の情報を格納
LOB型CLOB / BLOB大容量の文字やバイナリデータを格納

この記事のまとめ

  • Oracleでは NUMBER, VARCHAR2, DATE, CLOB などのデータ型を使用
  • 用途とサイズに応じて適切な型を選ぶことが大切
  • データ型の違いを理解することは、テーブル設計・パフォーマンス最適化の第一歩



[参考]
SQL言語リファレンス – データ型

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました