前回の【Lesson6】までは、SSMSのGUIでテーブルを作成してきました。
今回はそのGUIを使わず、SQLのCREATE TABLE文を使ってテーブルを作成します。
※【Lesson6】までに作ったTOYONA自動車工業データベースを使います。
テーブルの作成(SQL:CREATE TABLE)
今回の【Lesson7】で習得できること。
- データベースにテーブルを作成
- テーブル名の定義
- 列名の定義
- 型の定義
- NULL許容の定義
- PRIMARY KEY,FOREIGN KEYの制約の定義
CREATE TABLE構文
CREATE TABLE文を作成するときは、カッコ()の中に名称や定義、制約などを記述します。
CREATE TABLE(列名 型 NULL許容 制約)
ここで注意するポイントは、記述する項目間(列名や型など)にスペースを入力するのと、
1列毎にカンマ[,]で区切ることです。
CREATE TABLE
(
列名 型 NULL許容 制約,
列名 型 NULL許容,
列名 型 NULL許容
)
PRIMARY KEY(主キー)制約
CREATE TABLE文のカッコ()の中で、PRIMARY KEYを設定したい列の最後に記述します。
CONSTRAINT 制約名 PRIMARY KEY
FOREIGN KEY(外部キー)制約
CREATE TABLE文のカッコ()の中で、全ての列定義の最後に記述します。
CONSTRAINT 制約名 FOREIGN KEY(列名) REFERENCES 親テーブル名(親列名)
新規クエリ作成
- テーブルを追加したいデータベース(TOYONA自動車工業)を右クリックします。
- [新しいクエリ(Q)]を選択する。
CREATE TABLE文(作成・実行)
- CREATE TABLE文を記述する。
- エラーが出ていない事を確認して、ツールバー左上の[実行(X)]をクリック。
- 下部メッセージ欄に完了通知と日時が出ると、無事クエリが実行されています。
CREATE TABLE文で【T_在庫】テーブルを作成しました。
カッコ()の中は、上記で紹介した構文の通りの構成になっています。
カッコ()の中の1行目、’在庫ID’列の定義を抜き出して説明します。
在庫ID int NOT NULL CONSTRAINT PK_T_在庫 PRIMARY KEY,
[在庫ID]
- 列名です。設定したい列名を定義します。
[int]
- 型です。今回は数値を扱う列なのでint型を定義します。
文字を扱いたい場合は、nchar(),nvachar()を使います。
・nchar(2)は、文字数がカッコ()の中の数値に固定されて、指定した
数より多くても少なくてもダメです。全角半角は問いません。
・nvarchar(2)は、最大文字数がカッコ()の中の数値になり、その指定した
数より少なくても扱えます。こちらも全角半角は問いません。
[NOT NULL]
- NULLを許容するかの定義です。
NULL許容は、中身が空っぽのデータを扱うか否かの設定です。
NULLを許容するとアプリケーションでデータベースを扱う際、バグの原因にも
なりやすいと言われています。
基本、NULLは許容しない方が良いのでNOT NULLです。
[CONSTRAINT PK_T_在庫 PRIMARY KEY]
- CONSTRAINT は、’制約’という意味です。
‘PK_T_在庫’を制約名として、PRIMARY KEY(主キー)を定義します。
[CONSTRAINT FK_T_在庫_T_車両 FOREIGN KEY(車ID) REFERENCES T_車両(車ID)]
- ‘FK_T_在庫_T_車両’を制約名として、【T_車両】テーブルの’車ID’との
FOREIGN KEY(外部キー)制約を定義します。
テーブルを作成した後に制約を追加するには、ALTER TABLE文でないと定義できません。データベースの設計をしっかりと考えてテーブルを作成することが重要です。
CREATE TABLE文の実行確認
CREATE TABLE文によって定義されたテーブルが、データベースに反映されているかを
オブジェクトエクスプローラーを最新の情報に更新(F5)して確認します。
【T_在庫】テーブルの赤丸の部分で、列とキーの定義がデータベースに反映されている
ことが確認できます。列とキーの表示されている内容は下記の通りです。
[列]
- 列名(制約、型、NULL許容)
[キー]
- 制約名
CREATE TABLE文の実行後は、自分が定義した通りにデータベースに反映されているか、
確認するようにしましょう。
以上がCREATE TABLE文でした。
簡単にデータベースにテーブルが作れたのではないでしょうか。
次回は、ALTER TABLE文を使って、既存テーブルの中身を変更操作します。
ALTER TABLE文も必要なSQLスキルなので習得しましょう!
次回、SQL【Lesson8】ALTER TABLE文で既存テーブルの編集へつづく。
コメント