SQL CREATE TABLE

概要: このチュートリアルでは、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)

試してみる

SQL CREATE TABLE - courses table

coursesテーブルには、course_idcourse_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)

試してみる

SQL CREATE TABLE - trainings table

`trainings`テーブルは3つの列で構成されています。

  • `employee_id`列は、コースを受講した従業員のIDを格納します。
  • `course_id`列は、従業員が受講したコースを格納します。
  • `taken_date`列は、従業員がコースを受講した日付を格納します。

`trainings`テーブルの主キーは`employee_id`と`course_id`の2つの列で構成されているため、`PRIMARY KEY`テーブル制約を使用する必要がありました。

このチュートリアルでは、SQL `CREATE TABLE`文を使用してデータベースに新しいテーブルを作成する方法を学習しました。

このチュートリアルは役に立ちましたか?