CREATE 文でテーブルを作成する

CREATE 文でテーブルを作成する

SQL Server Management Studio - テーブルを作成する 」 では、 Management Studio の UI からテーブルを作成しました。

今回は T-SQL の CREATE ステートメントを使ってテーブルを作成してみましょう。

こちら のスクリプトを実行して、テーブルを再生成しておいてください。 全てのテーブルは使いませんが、これらのテーブルが存在している前提で進めます。


CREATE ステートメント

CREATE 文に指定できるオプションは山ほどありますが、シンプルな CREATE 文の構文は次のようなものになります。

CREATE TABLE [テーブル1] (
	[カラム1] [データ型] [NULL or NOT NULL],
	[カラム2] [データ型] [NULL or NOT NULL],
	[カラム3] [データ型] [NULL or NOT NULL],
	...
);

主キー (PRIMARY KEY) 制約の設定

例えば、[カラム1] を主キー (PRIMARY KEY) に設定するには次のようにします。 プライマリーキーになるカラムは NOT NULL で、入る値もユニークでなくてはいけません。

CREATE TABLE [テーブル1] (
	[カラム1] [データ型] NOT NULL PRIMARY KEY,
	[カラム2] [データ型] [NULL or NOT NULL],
	[カラム3] [データ型] [NULL or NOT NULL],
	...
);

主キー (PRIMARY KEY) の説明は 「Microsoft SQL Server のプライマリーキー(主キー)とは?」 をご覧ください。


外部キー (FOREIGN KEY) 制約の設定

あるカラムの値を、他のテーブルのカラムに存在している値のみに制限したい場合、外部キー(FOREIGN KEY) 制約をつけます。

例えば、[テーブル1] の [カラム3] に入る値を、 [テーブル2] の [カラム A] に入っている値に制限したい場合は次のように、外部キー(FOREIGN KEY) 制約を設定します。

CREATE TABLE [テーブル1] (
	[カラム1] [データ型] NOT NULL PRIMARY KEY,
	[カラム2] [データ型] [NULL or NOT NULL],
	[カラム3] [データ型] [NULL or NOT NULL] REFERENCES [テーブル2] ([カラム A]),
	...
);

デフォルト (DEFAULT) の設定

レコードが生成される時に値が指定されなかった際のデフォルトの値を設定することができます。

例えば、[カラム2] のデータ型が INT でデフォルト値を 0 にしたい時には、次のようにします。

CREATE TABLE [テーブル1] (
	[カラム1] [データ型] NOT NULL PRIMARY KEY,
	[カラム2] INT NULL DEFAULT (0),
	[カラム3] [データ型] [NULL or NOT NULL] REFERENCES [テーブル2] ([カラム A]),
	...
);

今回それぞれ制約名は省略しているので、かぶらない適当な名前を SQL Server がつけてくれます。

他にも CREATE ステートメントで UNIQUE 制約やチェック制約など、いろいろ設定することができます。

これらのキーや制約などは、CREATE の時のつけなくても、後から次にとりあげる ALTER TABLE で追加することも可能です。

CREATE 文でテーブルを作成する

それでは、実際に CREATE 文を実行して、テーブルを作ってみましょう。

StudentGPA という、各生徒の学期ごとの評定平均 (GPA) を保存するテーブルを作成するクエリーは以下の通りです。

CREATE TABLE StudentGPA (
    StudentGPAID    INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    StudentID       INT NOT NULL REFERENCES Student (StudentID),
    GradeYear       TINYINT NOT NULL,
    Semester        NVARCHAR(20) NOT NULL,
    GradeScore      DECIMAL(5,2) NULL,
    GPA             CHAR(1) NULL,
    CompletedFlag   BIT NOT NULL DEFAULT (0)
);

※ ポイント

  • INT 型の StudentGPAID カラムが主キー。 IDENTITY(1,1) を設定することで、レコードが挿入されるたびに、1 ずつインクリメントした番号が自動的に設定されます。
  • StudentID カラムは Student テーブルの StudentID に存在する値しか入らないように外部キーを設定しています。
  • CompletedFlag カラムは、レコードが挿入される際、値が指定されなかった時は 0 が入るように DEFAULT 値を設定しています。

[ 実行結果 ]
T-SQL でテーブルを作成する 1

T-SQL でテーブルを作成する 2

StudentGPA テーブルが生成されましたね!


次は、他のテーブルから SELECT INTO でテーブルを作成してみましょう。

© 2010-2024 SQL Server 入門