SQL
でテーブルを作成する方法を知っている 重要で基本的な概念です。
このチュートリアルでは、SQL
について説明します。 CREATE TABLE
の構文 PostgreSQLとMySQLの両方のコード例を使用したステートメント。
CREATE TABLE
構文
CREATE TABLE
の基本的な構文は次のとおりです。 ステートメント:
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
);
最初の部分では、CREATE TABLE
から始める必要があります ステートメントの後に、作成するテーブルの名前が続きます。
教師情報のテーブルを作成したい場合は、次のように記述します。
CREATE TABLE teachers();
括弧内に、テーブルの列を作成するための情報を追加します。括弧を忘れると、エラーメッセージが表示されます。
CREATE TABLE teachers;
括弧の終わりにあるセミコロンは、それがSQL
の終わりであることをコンピューターに示します。 声明。これは、ステートメントターミネータと呼ばれることがあります。
MySQL
とは ストレージエンジン?
MySQL
によると ドキュメント:
ストレージエンジンは、さまざまなテーブルタイプのSQL操作を処理するMySQLコンポーネントです。
MySQL
これらのストレージエンジンを使用して、データベースでCRUD(作成、読み取り、更新、削除)操作を実行します。
MySQL
で 、テーブルに使用するストレージエンジンのタイプを指定するオプションがあります。 ENGINE
を省略した場合 句の場合、デフォルトはInnoDBになります。
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
)ENGINE=storage_engine;
IF NOT EXISTS
とは 条項?
IF NOT EXISTS
というオプションの句があります これにより、作成するテーブルがデータベースにすでに存在するかどうかがチェックされます。その句をテーブル名の直前に配置できます。
CREATE TABLE IF NOT EXISTS teachers();
テーブルがすでに存在する場合、コンピューターは新しいテーブルを作成しません。
IF NOT EXISTS
を省略した場合 句を指定して、データベースにすでに存在するテーブルを作成しようとすると、エラーメッセージが表示されます。
この例では、最初にteachersというテーブルを作成しました。しかし、次のコマンドで同じテーブルを作成しようとすると、エラーが発生します。
CREATE TABLE IF NOT EXISTS teachers();
CREATE TABLE teachers();
CREATE TABLE
の括弧内 ステートメントでは、作成する列の名前とそのデータ型および制約を一覧表示します。
これは、school_id
の4つの列を追加する方法の例です。 、name
、email
およびage
私たちの教師のテーブルに。各列名はコンマで区切る必要があります。
CREATE TABLE teachers(
school_id data_type column_constraint,
name data_type column_constraint,
email data_type column_constraint,
age data_type column_constraint
);
MySQL
によると ドキュメント:
MySQLにはテーブルあたり4096列のハード制限がありますが、特定のテーブルの実効最大値はこれより少ない場合があります。正確な列制限は、いくつかの要因によって異なります。
小さいMySQL
で作業している場合 個人的なプロジェクトの場合は、テーブルの列数を超えることを心配する必要はありません。
PostgreSQLのドキュメントによると、テーブルごとに1600列の制限があります。 MySQL
に似ています 、正確な制限は、ディスク容量またはパフォーマンスの制限によって異なります。
SQL
のデータ型
テーブルに列を作成するときは、テーブルにデータ型を割り当てる必要があります。データ型は、列内の値の型を記述します。
SQL
のデータ型の6つの一般的なカテゴリは次のとおりです :
- 数値(int、float、serial、decimalなど)
- データと時間(タイムスタンプ、データ、時間など)
- 文字と文字列(char、varchar、textなど)
- Unicode(ntext、nvarcharなど)
- バイナリ(バイナリなど)
- その他(xml、テーブルなど)
この記事では、すべてのデータ型について説明するわけではありませんが、人気のあるデータ型のいくつかについて説明します。
PostgreSQL
の完全なリストは次のとおりです データ型とMySQL
データ型。
SERIAL
とは およびAUTO_INCREMENT
?
PostgreSQL
で 、SERIAL
データ型は、作成される新しい行ごとに1ずつ自動的にインクリメントされる整数です。
SERIAL
を追加できます school_id
の直後 教師テーブルの列。
school_id SERIAL
MySQL
で 、AUTO_INCREMENT
を使用します SERIAL
の代わりに 。この例では、INT
整数を表すデータ型が使用されます。
school_id INT AUTO_INCREMENT
Teachersテーブルに5行を追加した場合、出力にはschool_id
の1、2、3、4、5の数値が表示されます。 整数は新しい行ごとに自動的に1ずつ増加するため、列。
VARCHAR
とは データ・タイプ?
VARCHAR
データ型は、最大文字長を設定できる可変文字列長です。
これは、VARCHAR
の使用例です。 name
のデータ型 およびemail
教師テーブルの列。数字の30は最大文字長です。
name VARCHAR(30) column_constraint,
email VARCHAR(30) column_constraint,
SQLの列制約
これらは、テーブル列内のデータに適用されるルールです。
以下に、より一般的な列の制約のいくつかのリストを示します。
- PRIMARYKEY-このキーはテーブルの一意の識別子として機能します
- FOREIGN KEY-このキーは、列の値が別のテーブルにも存在することを確認します。これは、テーブル間のリンクとして機能します。
- UNIQUE-列のすべての値は一意である必要があります
- NOTNULL-値をNULLにすることはできません。 NULLは値がないことです
- CHECK-ブール式に対して値をテストします
PRIMARY
の例 およびFOREIGN
キー
Teachersテーブルに、PRIMARY KEY
を追加できます。 school_id
に 列。
これは、PostgreSQLでのコードの外観です:
school_id SERIAL PRIMARY KEY
これは、MySQLでのコードの外観です:
school_id INT AUTO_INCREMENT PRIMARY KEY
PRIMARY KEY
に複数の列が必要な場合 、次に、列を作成した直後に追加します。
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
PRIMARY KEY (column1, column2)
);
あるテーブルを別のテーブルにリンクする場合は、FOREIGN KEY
を使用できます。 。
主キーがdistrict_id
のdistrict_employeesというテーブルがあるとします。 。 PostgreSQLでのコードは次のようになります。
CREATE TABLE district_employees(
district_id SERIAL PRIMARY KEY,
employee_name VARCHAR(30) NOT NULL,
PRIMARY KEY(district_id)
);
Teachersテーブルでは、外部キーを使用して、district_employeesテーブルを参照できます。
district_id INT REFERENCES district_employees(district_id),
CREATE TABLE teachers(
school_id SERIAL PRIMARY KEY,
district_id INT REFERENCES district_employees(district_id),
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
);
NOT NULL
の例 、CHECK
およびUNIQUE
nullの値がないことを確認したい場合は、NOT NULL
を使用できます。 制約。
name VARCHAR(30) NOT NULL
CHECK
を使用できます すべての教師が18歳以上であることを保証するための制約。 CHECK
制約は、ブール式に対して値をテストします。
age INT CHECK(age >= 18)
値の1つがその条件を満たさない場合、エラーメッセージが表示されます。
UNIQUE
を使用できます すべてのメールが一意であることを確認するための制約。
email VARCHAR(30) UNIQUE
これは、教師テーブルの最終結果です:
これは、PostgreSQLでのコードの外観です:
CREATE TABLE teachers(
school_id SERIAL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30) UNIQUE,
age INT CHECK(age >= 18)
);
これは、MySQLでのコードの外観です:
CREATE TABLE teachers(
school_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30) UNIQUE,
age INT CHECK(age >= 18)
);
この記事を楽しんでいただき、SQLの旅に幸運をお祈りします。