SQLのテーブル作成
データをリレーショナルデータベースに保存する必要がある場合、まずはデータベースを作成します。次に、データを保存するためのテーブルをデータベース内に作成します。このチュートリアルでは、MySQLとPostgreSQLデータベースでSQLクエリを使用してテーブルを作成する方法について説明します。
PostgreSQLのクエリと似ているため、SQL Serverのテーブル作成の例はカバーしていません。
SQLのテーブルの作成
データをテーブルに保管するためには、保管すべきデータの種類を理解することが非常に重要です。テーブルを作成するための構文を理解しましょう。
Japanese: SQLのテーブル作成構文
CREATE TABLE table_name( column1 datatype, column2 datatype,... column-N datatype, PRIMARY KEY(one or more column) );
- CREATE TABLE is the keyword to tell the database to create a table.
- table_name is the unique name that is used for the table.
- The brackets that are next to the table name contains the list of columns.
- The list contains the column name and the data type that can be stored in the respective columns.
- PRIMARY KEY is used to specify the columns to be used for primary key.
SQLのテーブルを作成し、1つの列を主キーとして指定します。
テーブルを作成する際には、列の構造と一緒に主キーの情報を提供する必要があります。単一の列を主キーとして持つテーブルを作成する例を見てみましょう。
ネイティブによる日本語の一つのオプションで以下の文を言い換えてください:
MySQL
CREATE TABLE `test`.`student` (
`studentId` INT NOT NULL,
`studentName` VARCHAR(45) NULL,
`State` VARCHAR(45) NULL,
`Country` VARCHAR(45) NULL,
PRIMARY KEY (`studentId`),
UNIQUE INDEX `studentId_UNIQUE` (`studentId` ASC) VISIBLE);
上記のクエリは、プライマリキーカラムを「studentId」とした「Student」という新しいテーブルを作成します。注意点として、各カラム名にはデータ型が定義されています。例えば、studentIdカラムにはINT型のデータのみを格納することができますが、studentNameカラムにはVARCHAR型のデータを格納することができます。VARCHAR(45)は、文字列データの最大サイズが45文字まで許容されることを意味しています。プライマリキーはnullにできないため、studentIdカラムの定義でそれを指定しています。
ポストグレSQL
以下のクエリを使用して、PostgreSQLデータベース内にテーブルを作成することができます。
CREATE TABLE "test.student"(
"StudentId" integer NOT NULL,
"StudentName" character varying(45),
"State" character varying(45),
"Country" character varying(45),
PRIMARY KEY ("StudentId")
);
複数の主キーを持つSQLのテーブルを作成する。
もう一つの例を見てみましょう。ここでは、主キーに複数の列を使用します。
MySQLを日本語で言い換えると、ただ1つのオプションがあります: マイエスキューエル。
CREATE TABLE `test`.`customer` (
`CustomerId` INT NOT NULL,
`CustomerName` VARCHAR(45) NULL,
`ProductId` VARCHAR(45) NOT NULL,
`State` VARCHAR(45) NULL,
PRIMARY KEY (`CustomerId`, `ProductId`),
UNIQUE INDEX `CustomrId_UNIQUE` (`CustomerId` ASC) VISIBLE);
上記のクエリは、「テスト」データベーススキーマ内に「顧客」テーブルを作成します。このテーブルの主キーは、CustomerIdとProductIdの組み合わせです。
ポストグレスキューエル
CREATE TABLE "test.customer"(
"CustomerId" integer NOT NULL,
"CustomerName" character varying(45),
"ProductId" character varying(45),
"Country" character varying(45),
PRIMARY KEY ("CustomerId","ProductId")
);