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にはINTやBIGINTの独自型はありません)。
文字列型(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などのデータ型を使用 - 用途とサイズに応じて適切な型を選ぶことが大切
- データ型の違いを理解することは、テーブル設計・パフォーマンス最適化の第一歩
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?




コメント