OracleのCREATE TABLE文は、新しいテーブルを定義し、その列とデータ型を指定するために使用します。基本的な構文は次のとおりです。
CREATE TABLE table_name (
column1 data_type constraint,
column2 data_type constraint,
...
);
基本的な例
employee_id、first_name、last_name、email、hire_dateの列を持つemployeesという名前のテーブルを作成してみましょう。
CREATE TABLE employees (
employee_id NUMBER(10) PRIMARY KEY,
first_name VARCHAR2(50) NOT NULL,
last_name VARCHAR2(50) NOT NULL,
email VARCHAR2(100) UNIQUE,
hire_date DATE DEFAULT SYSDATE
);
想定される出力:
Table EMPLOYEES created.
列の定義とデータ型
テーブルの各列には、名前とデータ型が必要です。Oracleは次のようなさまざまなデータ型をサポートしています。
- NUMBER: 数値。精度と位取りを指定できます。
- VARCHAR2: 可変長の文字列。
- DATE: 日付と時刻の値。
- BLOB: Binary Large Object。バイナリデータの格納に使用します。
例: データ型の指定
CREATE TABLE products (
product_id NUMBER(10) PRIMARY KEY,
product_name VARCHAR2(255) NOT NULL,
price NUMBER(10, 2),
created_at DATE DEFAULT SYSDATE
);
想定される出力:
Table PRODUCTS created.
制約の追加
制約とは、データの整合性を確保するために列に適用するルールです。一般的な制約には次のものがあります。
- PRIMARY KEY: 各行を一意に識別します。
- UNIQUE: 列内のすべての値が一意であることを保証します。
- NOT NULL: 列にNULL値が入らないことを保証します。
- CHECK: 列内のすべての値が特定の条件を満たすことを保証します。
- FOREIGN KEY: 2つのテーブルの列の間に関連付けを設定します。
例: 制約の追加:
CREATE TABLE orders (
order_id NUMBER(10) PRIMARY KEY,
customer_id NUMBER(10) REFERENCES customers(customer_id),
order_date DATE NOT NULL,
status VARCHAR2(20) CHECK (status IN ('Pending', 'Shipped', 'Delivered'))
);
想定される出力:
Table ORDERS created.
Beekeeper Studioでのテーブル作成
Beekeeper Studioでは、スキーマブラウザのサイドバーで「+」ボタンを押すだけで、新しいテーブルをすばやく作成できます。また、テーブルの「構造ビュー」では、列の追加・削除・名前変更など、さまざまなデータベース操作が行えます。Beekeeper Studioは、Oracleをはじめ多くのデータベースに対応したオープンソースのSQLエディタ兼データベースマネージャーです。テーブルの作成、管理、クエリを行うための、使いやすく直感的なインターフェースを備えています。
高度なテーブルオプションと考慮事項
テーブルを作成する際は、次のオプションを検討してください。
表領域
Oracleの表領域(テーブルスペース)は、関連するデータファイルをまとめる論理的なストレージ単位です。テーブルやインデックスなどのデータベースオブジェクトを格納するコンテナとして機能します。表領域を使うと、ストレージをより体系的に割り当て・管理できます。
CREATE TABLE sales (
sale_id NUMBER(10) PRIMARY KEY,
product_id NUMBER(10) NOT NULL,
sale_date DATE
) TABLESPACE sales_data;
ストレージパラメータ
ストレージパラメータは、Oracleが表領域内でテーブルやインデックスに領域をどのように割り当てるかを定義します。これらのパラメータは、物理ストレージの管理や、データの格納方法・アクセス方法の制御に役立ちます。
CREATE TABLE logs (
log_id NUMBER(10) PRIMARY KEY,
log_message CLOB
) STORAGE (INITIAL 10M NEXT 5M);
表領域とストレージパラメータを使う理由
- 整理上のメリット: 表領域を使うと関連するデータをまとめられるため、管理やバックアップが容易になります。
- パフォーマンスの最適化: 頻繁にアクセスされるテーブルやインデックスを高速なディスクに配置したり、アクセス頻度の低いデータと分離したりすることで、パフォーマンスを最適化できます。
- データ管理: ストレージパラメータは効率的な領域の割り当てと管理に役立ち、断片化の可能性を減らしてデータベース全体のパフォーマンスを向上させます。
まとめ
Oracleでテーブルを作成するには、データ型、制約、ストレージオプションを理解する必要があります。紹介した例とガイドラインに従えば、データをより効果的に管理できるはずです。テーブル構造を定義する際は、データの整合性とパフォーマンスを忘れずに考慮してください。
こちらの記事もおすすめです:
Beekeeper Studioは無料&オープンソースのOracle GUIです
私の業務では、MSSQL/MariaDB/Oracle/PostgresやSQLiteを使ったレガシーコードから新規コードまですべてを扱っています。必要なものがすべて揃ったツールをついに見つけたと思います。 - Chris Pink
Beekeeper Studioは高速で直感的、使いやすいOracleクライアントです。他にも多数のデータベースに対応しており、Windows、Mac、Linuxで快適に動作します。
Beekeeper StudioについてのOracleユーザーの声
私の業務では、MSSQL/MariaDB/Oracle/PostgresやSQLiteを使ったレガシーコードから新規コードまですべてを扱っていますが、必要なものがすべて揃ったツールをついに見つけたと思います
Beekeeper Studioの一番の魅力は、すっきりしたインターフェースとデータの見せ方です。私が知る限り最高のツールです。エンジニアとしてPostgres、MySQL、SQLite、Oracle、MS SQLを使っていますが、Beekeeperはとてもスムーズでゆとりのある、自然で直感的なインターフェースでそのすべてをこなしてくれます。Beekeeper Studioを候補に入れれば、きっと手放せないツールになるはずです。