重要なポイント
プライマリーキーが単一キー?複合キー?それとも無い?
チェック項目
- すでに同じ名前の「テーブル名」が存在しているか?
同じ名前の「テーブル名」が存在していると、作成することができません。 - テーブルレイアウトにプライマリーキーがあるか?
テーブルレイアウトによりますが、「PRI」「KEY」などでプライマリーキーを表します。また、「単一キー」「複合キー」「キー無し」などで、「primary key()」の要/不要が変わります。- プライマリーキーを設定する場合、「primary key()」の間には、設定したい「カラム名」を入れます。
- 最後の「カラム設定」には「,(カンマ)」を付けるようにします。
- 「型」を確認しているか?
数値型か文字型かなどを確認してください。特に文字型(char/varchar)の場合には、クリエイト文を記述する際に桁数を記載する必要があります。- varchar(255)
- char(1)
- 「NULL」を確認しているか?
テーブルレイアウトによりますが、NULL項目が「null」を許す設計になっているかを確認します。また、プライマリーキーはNULLを許しません。今回のテーブルレイアウトでは、NULLを許す場合には「〇」を付けています。 - 空白は「半角スペース」で記述するようにしましょう。
カラム名/型/NULLを設定する場合に空白を入れます。その場合は、「× tab(タブ)」などでなく「半角スペース」を使用します。
構文
単一キー
下記のテーブルレイアウトをみるとプライマリーキーは「student_id」の1つだけとなります。この場合、「単一キー」です。
create table [テーブル名](
[カラム名1] [型] [null/not null],
[カラム名2] [型] [null/not null],
[カラム名3] [型] [null/not null],
primary key (
[カラム名1]
)
);
<例題>
- テーブルレイアウトを基にテーブルを作成すること。
create table students_mst (
student_id int not null,
student_name varchar(255) not null,
student_name_kana varchar(255) null,
student_number varchar(20) null,
department_id int null,
gender char(1) not null,
age int null,
test_score int null,
delete_at char(1) not null,
insert_at datetime not null,
update_at datetime not null,
primary key(
student_id
)
);
複合キー
下記のテーブルレイアウトをみるとプライマリーキーは「department_id」と「attend_no」の2つとなります。この場合、「複合キー」です。
create table [テーブル名](
[カラム名1] [型] [null/not null],
[カラム名2] [型] [null/not null],
[カラム名3] [型] [null/not null],
primary key (
[カラム名1]
,[カラム名2]
)
);
<例題>
- テーブルレイアウトを基にテーブルを作成すること。
create table students_mst (
department_id int null,
attend_no int null,
student_name varchar(255) not null,
student_name_kana varchar(255) null,
student_number varchar(20) null,
gender char(1) not null,
age int null,
test_score int null,
delete_at char(1) not null,
insert_at datetime not null,
update_at datetime not null,
primary key(
department_id
,attend_no
)
);
キー無し
下記のテーブルレイアウトをみるとプライマリーキーがありません。
アクセスログなどで、データを登録するのみで、更新/削除することが無いテーブルの場合、このようなテーブルレイアウトとなる場合があります。
create table [テーブル名](
[カラム名1] [型] [null/not null],
[カラム名2] [型] [null/not null],
[カラム名3] [型] [null/not null]
);
<例題>
- テーブルレイアウトを基にテーブルを作成すること。
create table students_mst (
student_id int not null,
student_name varchar(255) not null,
student_name_kana varchar(255) null,
student_number varchar(20) null,
department_id int null,
gender char(1) not null,
age int null,
test_score int null,
delete_t char(1) not null,
insert_at datetime not null,
update_at datetime not null
);
学科マスタも作成してみよう
<例題>
- テーブルレイアウトを基にテーブルを作成すること。
create table departments_mst (
department_id int not null,
department_name varchar(255) not null,
delete_ku char(1) not null,
insert_at datetime not null,
update_at datetime not null,
primary key(
department_id
)
);
今後にむけて
もう少しSQLに慣れてきたら、テーブルクリエイト文に「外部キー」を学んでもらいます。
ただ、一度に学ぶと混乱してしまうため、テーブル作成から登録・更新・削除までができるようになってから、改めて説明します!