ここではOracleのテーブルの作成について紹介します。

テーブルを作成する

CREATE TABLE 文

テーブルの作成は、CREATE TABLE文を使用します。

構文

CREATE TABLE {スキーマ名}.{テーブル名}(
    {列名} {データ型} [{制約}],
    {列名} {データ型} [{制約}],
    {列名} {データ型} [{制約}]
);


以下はテーブル「emp」を作成するCREATE TABLE文です。

CREATE TABLE emp (
     emp_no         VARCHAR2(4)   --社員番号
    ,depart_cd      VARCHAR2(3)   --部署コード
    ,emp_name       VARCHAR2(20)  --氏名
    ,emp_sex        CHAR(1)       --性別
    ,emp_age        NUMBER(3, 0)  --年齢
    ,emp_birthday   DATE          --生年月日
);


データ型

以下はテーブルの定義によく使用するデータ型です。

データ型説明データサイズ
CHAR(n)固定長の文字列。nが最大サイズ。最大2000バイト
NCHAR(n)UNICODEデータ型の固定長の文字列。nが最大サイズ。最大2000バイト
VARCHAR(n)可変長の文字列。nが最大サイズ。最大4000バイト
NVARCHAR2(n)UNICODEデータ型の可変長の文字列。nが最大サイズ。最大4000バイト
NUMBER(n, m)数値型。nに最大桁数、mに小数桁数を指定する。nは1〜38桁、mは-84〜127桁で省略時は0
DATE日付型。日付の年、月、日および時刻の時、分、秒の値。-4712/01/01 〜 9999/12/31
TIMESTAMP日付型。日付の年、月、日および時刻の時、分、秒、ミリ秒の値。
BLOBバイナリデータを格納できるデータ型。最大4GB
BFILE読み取り専用のバイナリデータを格納できるデータ型。最大4GB


主キー(プライマリーキー)を指定する

主キーのあるテーブルを作成する場合は、列名の定義の後に「CONSTRAINT ~ PRIMARY KEY ~」で主キーを定義します。
列名はカンマ区切りで複数記述することができます。

構文

CREATE TABLE {スキーマ名}.{テーブル名}(
    {列名} {データ型},
    {列名} {データ型},
    {列名} {データ型}
    CONSTRAINT {主キー名} PRIMARY KEY ({主キーの列名})
);


以下はテーブル「emp」に主キー名を「emp_pk」、主キーに「emp_no」を指定するCREATE TABLE文です。

CREATE TABLE emp (
     emp_no         VARCHAR2(4)   --社員番号
    ,depart_cd      VARCHAR2(3)   --部署コード
    ,emp_name       VARCHAR2(20)  --氏名
    ,emp_sex        CHAR(1)       --性別
    ,emp_age        NUMBER(3, 0)  --年齢
    ,emp_birthday   DATE          --生年月日
    ,CONSTRAINT emp_pk PRIMARY KEY (emp_no)
);


コメントを付けてテーブルを作成する

テーブルにコメントを設定するには、COMMENT ON TABLE文を使用します。

構文

COMMENT ON TABLE {テーブル名} IS '{コメント}';


テーブルの列にコメントを設定するには、COMMENT ON COLUMN文を使用します。

構文

COMMENT ON COLUMN {テーブル名}.{列名} IS '{コメント}';


以下はテーブル「emp」にテーブルと列にコメントを設定して作成するCREATE TABLE文です。

CREATE TABLE emp (
     emp_no         VARCHAR2(4)   --社員番号
    ,depart_cd      VARCHAR2(3)   --部署コード
    ,emp_name       VARCHAR2(20)  --氏名
    ,emp_sex        CHAR(1)       --性別
    ,emp_age        NUMBER(3, 0)  --年齢
    ,emp_birthday   DATE          --生年月日
    ,CONSTRAINT emp_pk PRIMARY KEY (emp_no)
);

COMMENT ON TABLE emp IS '社員マスタ';

COMMENT ON COLUMN emp.emp_no IS '社員番号';
COMMENT ON COLUMN emp.depart_cd IS '部署コード';
COMMENT ON COLUMN emp.emp_name IS '氏名';
COMMENT ON COLUMN emp.emp_sex IS '性別';
COMMENT ON COLUMN emp.emp_age IS '年齢';
COMMENT ON COLUMN emp.emp_birthday IS '生年月日';


以上、Oracleのテーブルの作成について解説しました。