Oracleデータベースにおけるテーブルの作成方法

SQL

Oracleデータベースを扱う上で、「テーブルの作成」は最初に覚えるべき最重要スキルの一つです。
この記事では、CREATE TABLE文の基本構文から、各種制約、表領域の指定方法、実践例まで丁寧に解説します。

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

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


1. CREATE TABLE の基本構文

CREATE TABLE テーブル名 (
列名1 データ型 [制約],
列名2 データ型 [制約],
...
);

🔍 テキスト図:CREATE TABLE構造のイメージ

┌───────────────┐
│ CREATE TABLE │
├───────────────┤
│ 列名 │
│ データ型 │
│ 制約 │
├───────────────┤
│ その他設定 │
└───────────────┘

2. 使用可能な代表的データ型

データ型説明
NUMBER(p,s)数値型(p=桁数, s=小数点以下)
CHAR(n)固定長文字列
VARCHAR2(n)可変長文字列
DATE日付と時刻(年月日時分秒)
TIMESTAMP日付と時刻(ミリ秒単位)
CLOB長大な文字列データ
BLOBバイナリデータ(画像など)

3. 各種制約の指定

制約は、データの一貫性と整合性を保証するために不可欠です。

制約名意味
NOT NULLNULLを許可しないename VARCHAR2(10) NOT NULL
PRIMARY KEY主キー(重複・NULL不可)empno NUMBER PRIMARY KEY
UNIQUE一意性制約(重複不可)email VARCHAR2(50) UNIQUE
CHECK条件式による制約CHECK (sal > 0)
FOREIGN KEY他のテーブルのキーを参照(外部キー)FOREIGN KEY (deptno) REFERENCES dept(deptno)

4. テーブルスペースの指定(TABLESPACE句)

CREATE TABLE emp (
empno NUMBER PRIMARY KEY,
ename VARCHAR2(20)
)
TABLESPACE users;
  • データファイルの保存場所を指定
  • パフォーマンスや管理性の観点から、意識的に設定するのが望ましい

5. 実践:SCOTTスキーマのEMP表を例に作成

以下は、Oracleのサンプルスキーマ「SCOTT」が持つEMP表の定義を参考にしたテーブル作成SQLです。

CREATE TABLE emp (
empno NUMBER(4) CONSTRAINT pk_emp PRIMARY KEY,
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(2)
);

6. 補足:SCOTTスキーマのインストール手順

※CDB構成を使用している場合は、PDBに接続してから以下の手順を実行してください。

接続例(SQL*Plus)

sqlplus sys/パスワード@PDB名 as sysdba

SCOTTユーザー作成と初期データ投入

-- ユーザー作成
CREATE USER scott IDENTIFIED BY tiger
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;

-- 権限付与
GRANT connect, resource TO scott;

-- データ投入($ORACLE_HOME/rdbms/admin/utlsampl.sql を実行)
@?/rdbms/admin/utlsampl.sql

7. CREATE TABLE AS SELECT(CTAS)

既存のテーブル構造とデータをコピーして、新規テーブルを作成できます。

CREATE TABLE emp_copy AS
SELECT * FROM emp WHERE deptno = 10;
  • データ型はSELECT結果から推定されるため、自動で決まる
  • 制約はコピーされない点に注意

8. テーブル作成時の注意点

✅ よくあるミスと対策

ミス例対策・ポイント
VARCHAR2にバイト数で長さ指定日本語を扱う場合は「CHAR単位」で指定
制約名を省略制約名は明示的に指定し、管理しやすくする
テーブルスペース指定し忘れ専用表領域に分けておくと運用が楽になる
PRIMARY KEYを後から付けるCREATE TABLE時に指定しておくと一貫性を保てる

9. テキスト図:テーブル設計の考え方

[要件定義]

[列名/型/制約] ──┬─> データ型の選定
└─> 制約(NOT NULL, PK, etc)

[保存場所](表領域)や運用設定(LOGGING, PCTFREE など)

10. まとめ

  • CREATE TABLE はOracleにおける表設計の基本中の基本
  • データ型・制約・表領域指定を正しく行うことで、保守性・パフォーマンス・整合性を高められる
  • 実務では デフォルト値や制約名、ロギング、分割保存(パーティション) も検討要素


[参考]
CREATE TABLE

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

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

コメント

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