MySQLのCREATE TABLE文の書き方
MySQLでCREATE TABLE文を使用して新しいテーブルを作成する方法について説明します。
CREATE TABLE文は、データベース内に新しいテーブルを定義するために使用されます。
テーブルの定義には、テーブル名、カラム(列)名、および各カラムのデータ型が含まれます。
オプションとして、各カラムに対して制約(例: NOT NULL, UNIQUE, PRIMARY KEYなど)を指定することもできます。
基本的なCREATE TABLE文の構文
CREATE TABLE文の基本構文は以下のとおりです。
CREATE TABLE テーブル名 ( カラム名1 データ型 [制約], カラム名2 データ型 [制約], ... [テーブル制約] );
この構文を分解して説明します。
- テーブル名:
作成するテーブルの名前です。
データベース内で一意である必要があります。
- カラム名:
各カラムの名前です。
- データ型:
各カラムに格納されるデータのタイプを指定します。
例えば、INT、VARCHAR(255)、DATEなどです。
- 制約:
各カラムに対して適用される制約を指定します。
これには、NOT NULL(NULL値を許可しない)、UNIQUE(ユニークな値でなければならない)、PRIMARY KEY(プライマリキーである)、DEFAULT(デフォルト値を指定する)などがあります。
- テーブル制約:
テーブル全体に適用される制約です。
例えば、複数のカラムに対してユニークな制約を設定したい場合や、外部キー制約を設定したい場合などです。
例: シンプルなテーブルの作成
例えば、顧客情報を保存するためのcustomersという名前のテーブルを作成したい場合、次のようなSQL文を使用します。
CREATE TABLE customers ( customer_id INT NOT NULL AUTO_INCREMENT, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (customer_id) );
この例を見ていきます。
- customer_id:
整数型(INT)で、NOT NULL制約が付いており、AUTO_INCREMENT属性により、自動的に一意の数値が割り振られます。
プライマリキー(PRIMARY KEY)として設定されています。
- first_name:
文字列型(VARCHAR(50))で、NOT NULL制約があるため、必ず値を持たなければなりません。
- last_name:
first_nameと同様に、VARCHAR(50)型でNOT NULL制約が付いています。
- email:
文字列型(VARCHAR(100))で、UNIQUE制約により、一意の値でなければなりません。
同じメールアドレスを持つ顧客を複数登録することはできません。
- created_at:
タイムスタンプ型(TIMESTAMP)で、デフォルト値として現在のタイムスタンプが設定されます。
これは新しいレコードが作成された日時を自動的に記録します。
テーブル制約の追加
CREATE TABLE文では、テーブル制約を追加することもできます。
例えば、外部キー制約を設定して、customersテーブルが他のテーブルとリレーションシップを持つようにすることができます。
CREATE TABLE orders ( order_id INT NOT NULL AUTO_INCREMENT, customer_id INT, order_date DATE, amount DECIMAL(10, 2), PRIMARY KEY (order_id), FOREIGN KEY (customer_id) REFERENCES customers(customer_id) );
この例では、ordersという名前のテーブルを作成しています。
このテーブルには以下のカラムがあります。
- order_id:
INT型で、AUTO_INCREMENTおよびPRIMARY KEYの制約が付いています。
- customer_id:
INT型で、customersテーブルのcustomer_idカラムと外部キー制約(FOREIGN KEY)で結びつけられています。
これにより、ordersテーブルのcustomer_idカラムには、必ずcustomersテーブルの有効なcustomer_idが格納されます。
- order_date:
日付型(DATE)で、注文日を記録します。
- amount:
DECIMAL(10, 2)型で、注文金額を記録します。
小数点以下2桁までの数値を保持します。
よく使用されるデータ型と制約
MySQLでよく使用されるデータ型には以下のようなものがあります。
- INT:
整数型
- VARCHAR(n):
可変長文字列型、最大n文字
- TEXT:
長文のテキストデータ
- DATE:
日付型(年-月-日)
- TIMESTAMP:
タイムスタンプ型(年-月-日 時:分:秒)
また、一般的な制約には以下のようなものがあります。
- NOT NULL:
NULL値を許可しない
- UNIQUE:
一意の値でなければならない
- PRIMARY KEY:
テーブル内で一意の識別子となるカラム
- FOREIGN KEY:
他のテーブルのカラムへの参照を保持するカラム
まとめ
CREATE TABLE文を使用することで、MySQLデータベースに新しいテーブルを作成できます。
テーブルの構造を定義する際には、カラム名、データ型、制約を指定し、必要に応じてテーブル全体に対する制約も設定します。
これにより、データの整合性と一貫性を保つことができます。
テーブル設計を適切に行うことは、データベースのパフォーマンスと効率を向上させるために重要です。