ここでは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のテーブルの作成について解説しました。