Oracleデータベースにおけるテーブル作成は、効率的なデータ管理の基本です。本記事では、初心者でも理解しやすいように、テーブル作成の構文や主要なデータ型を具体例とともに詳しく解説します。また、現場で役立つヒントや注意点も盛り込みました。
リンク
リンク
リンク
1. テーブル作成の基本構文
Oracleでテーブルを作成するには、以下の基本構文を使用します。
CREATE TABLE テーブル名 (
列名 データ型 [制約],
...
);
- テーブル名: 他と重複しないユニークな名前を付けましょう。慣例的に複数形を使用することが多いです(例:
employees
)。 - 列名: テーブル内のデータ項目に適切な名前を付けます。名前は短く分かりやすくします(例:
emp_id
,hire_date
)。 - データ型: データの性質に合わせた型を選択します。型の選択はパフォーマンスやストレージ効率に大きく影響します。
- 制約: データの一貫性を保つためのルールを設定します(例:
NOT NULL
,PRIMARY KEY
)。
例: 社員情報を管理するテーブル
CREATE TABLE employees (
emp_id NUMBER(6) PRIMARY KEY,
name VARCHAR2(50) NOT NULL,
gender CHAR(1) CHECK (gender IN ('M', 'F')),
salary NUMBER(8, 2) DEFAULT 0,
hire_date DATE NOT NULL,
profile_picture BLOB,
notes CLOB,
last_update TIMESTAMP DEFAULT SYSTIMESTAMP
);
2. データ型の詳細解説
Oracleで使用頻度が高いデータ型を、具体例とともに詳しく解説します。
1. NUMBER
- 用途: 数値データの格納に使用。
- 構文:
NUMBER(精度, スケール)
- 精度: 最大桁数(1~38)。
- スケール: 小数点以下の桁数(-84~127)。
- 例:sqlコードをコピーする
salary NUMBER(8, 2); -- 最大8桁、小数点以下2桁
2. CHAR
- 用途: 固定長の文字列を格納。
- 構文:
CHAR(サイズ)
- サイズ: 最大文字数(1~2000)。
- 特徴: 指定サイズ未満の場合、余分なスペースで埋められる。
- 例:sqlコードをコピーする
gender CHAR(1); -- 性別を格納
3. VARCHAR2
- 用途: 可変長の文字列を格納。
- 構文:
VARCHAR2(サイズ)
- サイズ: 最大文字数(1~4000)。
- 例:sqlコードをコピーする
name VARCHAR2(50); -- 最大50文字の名前
4. BLOB
- 用途: 画像や動画などのバイナリデータを格納。
- 特徴: 最大4GBのデータを保存可能。
- 例:sqlコードをコピーする
profile_picture BLOB; -- プロフィール画像を格納
5. CLOB
- 用途: 長文の文字データを格納。
- 特徴: 最大4GBの文字データを保存可能。
- 例:sqlコードをコピーする
notes CLOB; -- 長文のメモを格納
6. DATE
- 用途: 日付と時刻を格納。
- 特徴: 年、月、日、時、分、秒をサポート。
- 例:sqlコードをコピーする
hire_date DATE; -- 雇用日を格納
7. TIMESTAMP
- 用途: DATE型を拡張し、ナノ秒精度まで記録。
- 例:sqlコードをコピーする
last_update TIMESTAMP(3); -- 小数秒3桁で時刻を格納
3. 実用例: 商品管理テーブルの作成
以下は、さまざまなデータ型を活用した商品の管理テーブルの例です。
CREATE TABLE product_catalog (
product_id NUMBER(10) PRIMARY KEY,
product_name VARCHAR2(100) NOT NULL,
description CLOB,
image BLOB,
price NUMBER(10, 2) DEFAULT 0,
release_date DATE,
last_updated TIMESTAMP DEFAULT SYSTIMESTAMP
);
データ挿入例
INSERT INTO product_catalog (product_id, product_name, price, release_date)
VALUES (1, 'Smartphone X', 799.99, TO_DATE('2024-12-15', 'YYYY-MM-DD'));
4. 設計のベストプラクティス
- データ型を慎重に選択
- 数値には
NUMBER
を、可変長文字列にはVARCHAR2
を使用するなど、データの性質に合わせて選びます。
- 数値には
- 制約を活用する
- PRIMARY KEY、FOREIGN KEYなどを設定してデータの整合性を確保。
- 可読性の高い命名
- 列名やテーブル名には統一された命名規則を使用(例: スネークケースやキャメルケース)。
- ストレージ効率を考慮
- 必要以上に大きなデータ型を設定しないようにしましょう。
5. よくあるエラーと対処法
エラー1: ORA-00955 テーブル名が既に存在します
- 原因: 同名のテーブルが既に存在。
- 対処: テーブルを削除して再作成する。sqlコードをコピーする
DROP TABLE テーブル名 CASCADE CONSTRAINTS;
エラー2: ORA-01747 列名が不正
- 原因: 列名に予約語や特殊文字を使用。
- 対処: 列名を変更するか、ダブルクォートで囲む。sqlコードをコピーする
"COLUMN"
この記事を通じて、Oracleデータベースのテーブル作成の基礎をしっかりと学べたはずです。次のステップとして、インデックスの作成やパフォーマンスチューニングについて学ぶのもおすすめです。
[参考]
Oracle Database SQL言語リファレンス 19c
コメント