概要: このチュートリアルでは、SQL CREATE TABLE
文を使用して新しいテーブルを作成する方法を学習します。
SQL CREATE TABLE文の概要
これまでに、サンプルデータベースの1つ以上のテーブルからデータをクエリするさまざまな方法を学習しました。いよいよ独自のテーブルを作成する方法を学ぶ時が来ました。
テーブルは、データベースに格納されたデータの集合です。テーブルは列と行で構成されます。新しいテーブルを作成するには、次の構文でCREATE TABLE
文を使用します。
CREATE TABLE table_name(
column_name_1 data_type default value column_constraint,
column_name_2 data_type default value column_constraint,
...,
table_constraint
);
Code language: SQL (Structured Query Language) (sql)
新しいテーブルを作成するために必要な最小限の情報は、テーブル名と列名です。
table_name
で指定されるテーブル名は、データベース内で一意である必要があります。既に存在するテーブルと同じ名前のテーブルを作成すると、データベースシステムはエラーを発行します。
CREATE TABLE
文では、列定義のカンマ区切りリストを指定します。各列定義は、列名、列のデータ型、デフォルト値、および1つ以上の列制約で構成されます。
列のデータ型は、その列に格納できるデータの型を指定します。列のデータ型は、数値、文字、日付などです。
列制約は、列に格納できる値の種類を制御します。たとえば、NOT NULL
制約は、列にNULL値が含まれていないことを保証します。
列には複数の列制約を設定できます。たとえば、users
テーブルのusername
列には、NOT NULL
制約とUNIQUE
制約の両方を含めることができます。
制約に複数の列が含まれる場合は、テーブル制約を使用します。たとえば、テーブルに2つの列で構成される主キーがある場合、この場合はPRIMARY KEY
テーブル制約を使用する必要があります。
SQL CREATE TABLEの例
従業員のトレーニングデータをデータベースに保存する必要があるとします。各従業員は0個以上のトレーニングコースを受講でき、各トレーニングコースは0人以上の従業員が受講できるという要件があります。
現在のデータベースを調べたところ、この情報を格納する場所が見つからなかったため、新しいテーブルを作成することにしました。
次のステートメントは、courses
テーブルを作成します。
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
course_name VARCHAR(50) NOT NULL
);
Code language: SQL (Structured Query Language) (sql)

courses
テーブルには、course_id
とcourse_name
の2つの列があります。
course_id
は、courses
テーブルの主キー列です。各テーブルには、テーブルの各行を一意に識別する主キーが1つだけあります。すべてのテーブルに主キーを定義することをお勧めします。
course_id
のデータ型は、INT
キーワードで表される整数です。さらに、course_id
列の値はAUTO_INCREMENT
です。これは、course_id
列の値を指定せずにcourses
テーブルに新しい行を挿入すると、データベースシステムがその列に整数を生成することを意味します。
course_name
は、コースの名前を格納します。そのデータ型は、最大長が50の文字列(VARCHAR
)です。NOT NULL
制約は、course_name
列にNULL値が格納されないようにします。
これで、コースデータを格納するテーブルができました。トレーニングデータを格納するために、次のように`trainings`という名前の新しいテーブルを作成します。
CREATE TABLE trainings (
employee_id INT,
course_id INT,
taken_date DATE,
PRIMARY KEY (employee_id , course_id)
);
Code language: SQL (Structured Query Language) (sql)

`trainings`テーブルは3つの列で構成されています。
- `employee_id`列は、コースを受講した従業員のIDを格納します。
- `course_id`列は、従業員が受講したコースを格納します。
- `taken_date`列は、従業員がコースを受講した日付を格納します。
`trainings`テーブルの主キーは`employee_id`と`course_id`の2つの列で構成されているため、`PRIMARY KEY`テーブル制約を使用する必要がありました。
このチュートリアルでは、SQL `CREATE TABLE`文を使用してデータベースに新しいテーブルを作成する方法を学習しました。