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 NULL | NULLを許可しない | 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専門のエージェントで非公開求人をチェックしてみませんか?




コメント