重要なポイント

プライマリーキーが単一キー?複合キー?それとも無い?
テーブルレイアウトを見ながら作成しよう!

チェック項目

  1. すでに同じ名前の「テーブル名」が存在しているか?
    同じ名前の「テーブル名」が存在していると、作成することができません。
  2. テーブルレイアウトにプライマリーキーがあるか?
    テーブルレイアウトによりますが、「PRI」「KEY」などでプライマリーキーを表します。また、「単一キー」「複合キー」「キー無し」などで、「primary key()」の要/不要が変わります。

    • プライマリーキーを設定する場合、「primary key()」の間には、設定したい「カラム名」を入れます。
    • 最後の「カラム設定」には「,(カンマ)」を付けるようにします。
  3. 」を確認しているか?
    数値型か文字型かなどを確認してください。特に文字型(char/varchar)の場合には、クリエイト文を記述する際に桁数を記載する必要があります。

    • varchar(255)
    • char(1)
  4. NULL」を確認しているか?
    テーブルレイアウトによりますが、NULL項目が「null」を許す設計になっているかを確認します。また、プライマリーキーはNULLを許しません。今回のテーブルレイアウトでは、NULLを許す場合には「〇」を付けています。
  5. 空白は「半角スペース」で記述するようにしましょう。
    カラム名/型/NULLを設定する場合に空白を入れます。その場合は、「× tab(タブ)」などでなく「半角スペース」を使用します。

構文

単一キー

下記のテーブルレイアウトをみるとプライマリーキーは「student_no」の1つだけとなります。この場合、「単一キー」です。

create table [テーブル名](
 [カラム名1] [型] [null/not null],
 [カラム名2] [型] [null/not null],
 [カラム名3] [型] [null/not null],
 
 primary key (
  [カラム名1]
 )
);

<例題>

  • テーブルレイアウトを基にテーブルを作成すること。
create table student_mst (
 student_no int not null,
 student_kj varchar(255) not null,
 student_kn varchar(255) null,
 student_cd varchar(20) null,
 gakka_no int null,
 seibetu_ku char(1) not null,
 age_nb int null,
 test_su int null,
 delete_ku char(1) not null,
 insert_at datetime not null,
 update_at datetime not null,

 primary key(
  student_no
 )
);

複合キー

下記のテーブルレイアウトをみるとプライマリーキーは「gakka_no」と「attend_no」の2つとなります。この場合、「複合キー」です。

create table [テーブル名](
 [カラム名1] [型] [null/not null],
 [カラム名2] [型] [null/not null],
 [カラム名3] [型] [null/not null],
 
 primary key (
   [カラム名1]
  ,[カラム名2]
 )
);

<例題>

  • テーブルレイアウトを基にテーブルを作成すること。
create table student_mst (
 gakka_no int null,
 attend_no int null,
 student_kj varchar(255) not null,
 student_kn varchar(255) null,
 student_cd varchar(20) null,
 seibetu_ku char(1) not null,
 age_nb int null,
 test_su int null,
 delete_ku char(1) not null,
 insert_at datetime not null,
 update_at datetime not null,

 primary key(
   gakka_no
  ,attend_no
 )
);

キー無し

下記のテーブルレイアウトをみるとプライマリーキーがありません。
アクセスログなどで、データを登録するのみで、更新/削除することが無いテーブルの場合、このようなテーブルレイアウトとなる場合があります。

create table [テーブル名](
 [カラム名1] [型] [null/not null],
 [カラム名2] [型] [null/not null],
 [カラム名3] [型] [null/not null]
);

<例題>

  • テーブルレイアウトを基にテーブルを作成すること。
create table student_mst (
 student_no int not null,
 student_kj varchar(255) not null,
 student_kn varchar(255) null,
 student_cd varchar(20) null,
 gakka_no int null,
 seibetu_ku char(1) not null,
 age_nb int null,
 test_su int null,
 delete_ku char(1) not null,
 insert_at datetime not null,
 update_at datetime not null
);

学科マスタも作成してみよう

<例題>

  • テーブルレイアウトを基にテーブルを作成すること。
create table gakka_mst (
 gakka_no int not null,
 gakka_kj varchar(255) not null,
 delete_ku char(1) not null,
 insert_at datetime not null,
 update_at datetime not null,

 primary key(
  gakka_no
 )
);

今後にむけて

もう少しSQLに慣れてきたら、テーブルクリエイト文に「外部キー」を学んでもらいます。
ただ、一度に学ぶと混乱してしまうため、テーブル作成から登録・更新・削除までができるようになってから、改めて説明します!