重要なポイント
プライマリーキーが単一キー?複合キー?それとも無い?
チェック項目
- すでに同じ名前の「テーブル名」が存在しているか?
同じ名前の「テーブル名」が存在していると、作成することができません。 - テーブルレイアウトにプライマリーキーがあるか?
テーブルレイアウトによりますが、「PRI」「KEY」などでプライマリーキーを表します。また、「単一キー」「複合キー」「キー無し」などで、「primary key()」の要/不要が変わります。- プライマリーキーを設定する場合、「primary key()」の間には、設定したい「カラム名」を入れます。
- 最後の「カラム設定」には「,(カンマ)」を付けるようにします。
- 「型」を確認しているか?
数値型か文字型かなどを確認してください。特に文字型(char/varchar)の場合には、クリエイト文を記述する際に桁数を記載する必要があります。- varchar(255)
- char(1)
- 「NULL」を確認しているか?
テーブルレイアウトによりますが、NULL項目が「null」を許す設計になっているかを確認します。また、プライマリーキーはNULLを許しません。今回のテーブルレイアウトでは、NULLを許す場合には「〇」を付けています。 - 空白は「半角スペース」で記述するようにしましょう。
カラム名/型/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に慣れてきたら、テーブルクリエイト文に「外部キー」を学んでもらいます。
ただ、一度に学ぶと混乱してしまうため、テーブル作成から登録・更新・削除までができるようになってから、改めて説明します!