はじめに
CREATE文は、SQLのなかでもデータ定義言語と呼ばれ、 データベースそのものを操作する命令です。
データを入れるハコになるので、テーブルの設計次第でデータの使い勝手が大きく変わります。
Step1: 概念を知る
新しいテーブルを作成する際に用います。
テーブル名と、列の名前、型を指定することで、新しいテーブルを作成することができます。
Step2: 使い方を知る
今回は人の情報を管理する、 personというテーブルを作成してみます。 personテーブルはこのような定義にします。
【テーブル名: person】
決まった形があるわけではありませんが、上記のような表は、 テーブル設計の際に使われることが多い書き方です。
・カラム名
列のタイトルです。
自由につけることが出来ますが、 カラム名をもとにデータを抽出 (この後の章で学習) しますので、分かりやすい名前を付けた方がいいでしょう。
単語同士は (アンダースコア)でつなぐのが通例です。
・型
これまでの学習でも出てきましたので、 何となくイメージがつくのではないでしょうか。
SQLにも入力する値によって型が決まっています。
補足
CHAR VARCHAR は文字列データを扱えることは同じですが、
CHAR は固定長、 VARCHAR は可変長といい、格納されるデータによって挙動が変わります。
列定義をそれぞれ CHAR (10) VARCHAR(10) として、abc というデータを格納した場合は以下のようになります。
・CHAR の場合
文字列 abcの右側に7バイト分の空白が自動で挿入され、 10バイトに固定されます。
・VARCHAR の場合
文字列 abcは3バイトのまま格納されるよう動的に調整されます。
格納するデータが郵便番号など、長さが一定のものの場合は CHAR
人の名前など、長さが一定でないものの場合は、 VARCHAR などと使い分けるのがいいでしょう。
また、固定長である場合、「登録したデータが定義した長さに満たない可能性があるかどうか」
を考慮した設計でなくてはなりません。
例えば、WHERE句の条件として ID= ‘abc’ とした場合に、
‘abc ‘ (←気づきづらいですが、空白埋めで10文字) のデータは検索結果にひっかかりません。
こういったDB設計とプログラマーの実装とが噛み合っていない場合、
この問題自体に気づきづらいため、 この項目は本当に CHAR でいいのか?という点はしっかりと考慮しなくてはなりません。
・備考
主キーや NOT NULL など、テーブルに設定した定義をここに記述します。
1. 主キーとは、 一意で重複がないキーです。
同じテーブル内で重複するデータを持つことはできません。
また、主キーに指定した列は自動的に NOT NULL になります。
2. NOT NULL とは、空欄を許容しないという意味です。
値を入力しないとエラーになります。
必ず値を入力してほしいところに設定するといいでしょう。
では、テーブルを作成しましょう!
1. CREATE TABLE を宣言し、テーブル名 person をつけます。
2. テーブルの情報は()内に記述します。
3. カラム名 fname、型 VARCHAR 入力可能数 (20) の順に記述します。
※中にはDATE型のように、 決まった出力形式があり、 入力可能数の記述が不要な型もあります。
実行して構文にエラーがなければテーブルが作成されます。
これで、データを入れることができるようになります。
おまけ
テーブルを作成しても何か結果が返されるわけではないので、本当に作成できたか不安に思うかもしれません。
そこで、テーブルの定義を確認することによって、 実際にテーブルが作成されたか確認することが出来ます。
まだ学習していない構文を多く含んでいますので、参考程度に見るだけで大丈夫です。
書き方
※ ORDER BY は付与しなくても問題ありません
