CREATE TABLEの構文解説

まずは、基本構文を見ていきましょう!
基本構文
create table テーブル名 (
カラム名 データ型 制約,
カラム名 データ型 制約,
...
);

ところで、カラム名 データ型 制約って何かしら?

以下にまとめました!
カラム名 データ型 制約について
カラム名 (Column Name) は、テーブルの各列に付ける名前です。データを挿入したり取得したりする際に、このカラム名を使って操作を行います。
データ型 (Data Type) は、カラムに保存するデータの種類を指定します。数字や文字の指定をします。
制約 (Constraint) は、データの正確性や一貫性を保つために設定するルールです。

前回実行したSQLを用意しましたので、こちらを参照していきましょう。

前回の記事では、Oracle Live SQLというサイトで、
実際にSQLを実行してみたよ!ぜひ見てね!!
-- 申請管理情報テーブルの作成
create table 申請管理情報 (
STAFF_NO varchar2(10) not null, -- 職員番号 (Staff Number)
APPLI_NO varchar2(10) not null, -- 申請番号 (Application Number)
APPLI_DATE date, -- 申請年月日 (Application Date)
APPROVAL_DATE date, -- 承認日 (Approval Date)
SEND_BACK_DATE date, -- 差戻年月日 (Send Back Date)
APPLICATION_CONTENT varchar2(50), -- 申請内容 (Application Content)
constraint PK_申請管理情報 primary key (STAFF_NO, APPLI_NO)
);

ところで、SQLに乗ってる、 – はなに?
例えば、 – 職員番号 (Staff Number)のところ。

SQLの--はコメントを表す記号です。SQLコードに対するメモや説明文を記述するためのものになります。
SQLの実行には影響を与えません。
他の方が見たときに、SQLの意図やロジックを理解しやすくするために使用されます。

なるほどー
コメントがあると、読みやすいね!
SQLのcreate table文は、新しいテーブルを作成するための命令です。テーブルとは、Excelの表のように、データを行と列で管理するものを指します。
今回の例では、名前が「申請管理情報」のテーブルを作成していることになります。
<テーブル名の指定をします>
create table 申請管理情報 (
create table:テーブルを新しく作成するSQLの命令のことです。
申請管理情報:作成するテーブルの名前です。日本語でも問題ないが、一般的には英語で命名することが多いです。
<列の定義(カラム定義)をします>
STAFF_NO varchar2(10) not null,
STAFF_NO:列の名前です。
varchar2(10):最大10文字の文字列を保存できるデータ型です。varchar2は文字数に応じたメモリを使用するため効率的です。
not null:この列には必ず値を入力しなければならない(空欄不可)。

varchar2(10)って??

varchar2 は文字列(テキスト)を格納するためのデータ型を指します。
- 「var」 = variable(可変の)
- 「char」 = character(文字)
つまり、varchar2 は可変長の文字列を保存できるデータ型です。
varchar2(10) の 10 は、最大で何文字のデータを保存できるかを指定する。

なるほどね!

ちなみに、varchar2 に似ている charというものもあります。違いは以下の通りです。
| データ型 | 特徴 | メモリ使用 |
|---|
varchar2 | 可変長の文字列。文字数に応じてメモリを使う | 効率的 (短い文字列では節約) |
char | 固定長の文字列。指定した文字数分、常にメモリを使う | 非効率的 (短い場合でも無駄) |
<続きのSQL>
APPLI_NO varchar2(10) not null,

not nullって何??

NOT NULL はSQLの制約(constraint)の一つで、特定の列(カラム)に対して「必ず値を入力しなければならない」というルールを設定します。

ということは、NULL は値が存在しないことを指すということかな?

その通りです!
NULL は「値が存在しない」ことを意味します。
文字列の空白('')や数字のゼロ(0)とは異なり、データそのものが存在しない状態を表します。
<続きのSQL>
APPLI_DATE date,

dateは日付のことかな?

はい、日付型を指します。
日付専用のデータ型になります(年、月、日を管理)。
<続きのSQL>
APPROVAL_DATE date,
SEND_BACK_DATE date,
APPLICATION_CONTENT varchar2(50),

dateは日付型でvarcharは可変の文字型だね。

はい、あってます!
<続きのSQL>
constraint PK_申請管理情報 primary key (STAFF_NO, APPLI_NO)
);

いよいよ、最終行ね。
これまでの文章とは少し違うみたいね。

少し癖がありますよね。
分割すると、
constraint 制約名 制約の種類 (列名)
になります。

constraint 、PK_ primary keyってなに?

constraint (制約) は、データベースに保存されるデータに対してルールを設定するSQLのキーワードです。誤ったデータや不適切なデータが保存されないようにすることができます。
PK_申請管理情報 は、この制約に名前を付けたものです。名前を付ける理由は、後で制約を削除したり変更したりする際に、制約を特定しやすくするためです。
primary key (主キー) は、テーブル内で各行を一意に識別するための列または列の組み合わせです。詳しくは以下にまとめました。
主キーにはいくつかの重要な特徴があります。
まず、一意性 (Unique) があり、主キーの値は他の行と重複してはいけません。
これにより、各行を一意に識別できます。
次に、NULLの禁止 (NOT NULL) という特徴があり、主キーの列にはNULLを保存することができません。
これは、主キーが各行を特定するために必ず値を持つ必要があるためです。
最後に、テーブルごとに1つだけ 主キーを設定できます。
つまり、1つのテーブルに複数の主キーを設定することはできず、指定できる主キーは1つに限られます。これらの特徴により、データベースにおけるデータの整合性と一貫性が保証されます。
constraint:制約(特別なルール)を指定する命令です。
PK_申請管理情報:制約に付けた名前です(「PK」はPrimary Keyの略)。
primary key:主キー(Primary Key)を指定します。主キーとは、各行を一意に識別するための列(または複数の列)のことを指します。
(STAFF_NO, APPLI_NO):STAFF_NOとAPPLI_NOを組み合わせて、他の行と重複しないようにします。例えば、同じ職員番号でも、申請番号が異なれば別の行として登録できます。
<実行結果>

SQLを実行するために、前回同様、Oracle Live SQLを使用していくね。

最後にひとこと

今回は、CREATE TABLEについて解説してきました!
次回もお楽しみに!!




コメント