【MySQL】create tableの基本|コマンド付きで解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年10月)

✔当記事は以下の方々にとくに有用となる内容を提供します

「mysql create tableコマンドの機能を理解したい」

「mysql create tableコマンドの書き方を探している」

「mysql create tableコマンドの具体的な使用例を見つけたい」

✔当記事を通じてお伝えする内容

  • mysql create tableコマンドの基本原則
  • mysql create tableコマンドの文法とその使用方法
  • mysql create tableコマンドの具体的な適用例

当記事では、mysql create tableコマンドの基本から、それを最大限活用するためのオプションの活用法まで、具体的な例を交えながら詳細に説明します。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

MySQLでテーブルを作成する準備

こちらでは、MySQLの基本セットアップと、テーブルを作成するための前提知識について説明します。

安全かつ効率的にテーブルを操作する準備をしましょう。

  • MySQLのダウンロードとインストール
  • テーブルの基本概念とその必要性

MySQLのダウンロードとインストール

MySQLの公式サイトから最新の安定版をダウンロードしましょう。

ダウンロードしたら、次の手順に従ってインストールします。

sudo apt update
sudo apt install mysql-server

インストール後、sudo mysql_secure_installationを実行してセキュリティ設定をおこなうことをおすすめします。

テーブルの基本概念とその必要性

テーブルは、行と列からなるマトリックス構造で、データを格納するための場所となります。

イメージはMicrosoft OfficeのExcel。

各行・列は以下のような意味を持ちます。

  • 各行:ユニークなデータレコードを示す
  • 列;そのデータの属性を示す

例としては、以下のとおり。

  • テーブル:ユーザーを保存する
  • 各行:ユーザー一人一人のレコード
  • 各列:各ユーザーに属する姓・名・メールアドレスなどを保存する

正確なテーブル構造の設計は、情報の検索、更新、削除の効率を大幅に向上させられます。

新たなテーブルを作成する

こちらでは、MySQLを用いて新しいテーブルを実際に作成する方法を説明します。

テーブル作成のスキルを身につけることで、データの構造化と効果的な保存方法を習得できるでしょう。

  • “CREATE TABLE” 構文紹介
  • 実際のテーブル作成例とその解析

“CREATE TABLE” 構文紹介

MySQLでは、新しいテーブルを作成するには “CREATE TABLE” コマンドを使用します。

このコマンド後にテーブル名を指定し、カラム名とそのデータ型を括弧内で定義します。

CREATE TABLE テーブル名 (
   カラム1 データ型,
   カラム2 データ型,
   ...
);

この基本的な構文を使用して、独自のテーブルを定義できます。

CREATE TABLEはSQLコマンドです。MySQLに限らず、SQL言語として学びたい方は以下の記事もおすすめです。

実際のテーブル作成例とその解析

例として、employeesというテーブルを作成してみましょう。

このテーブルには、id, first_name, last_name, birthdayの4つのカラムを持つとします。

CREATE TABLE employees (
   id INT AUTO_INCREMENT PRIMARY KEY,
   first_name VARCHAR(50),
   last_name VARCHAR(50),
   birthday DATE
);

idは自動インクリメントの整数型として定義され、主キーとして設定されています。

first_namelast_nameは最大50文字の文字列を格納可能なカラムで、birthdayは日付型のカラムです。

キー制約とその適用

こちらでは、MySQLのテーブルにおけるキー制約に関する詳細と、それらをテーブル作成時にどのように適用するかを説明します。

適切なキー制約の理解と使用は、データの整合性と効率性を確保するために不可欠です。

  • 主キー(PRIMARY KEY)制約の説明と使用例
  • ユニークキー(UNIQUE KEY)とその利用方法
  • 外部キー(FOREIGN KEY)制約の解説と活用

主キー(PRIMARY KEY)制約の説明と使用例

主キーは、テーブル内の各レコードを一意に識別するためのキーです。

ひとつのテーブルにはひとつだけ主キーを持ち、その値は一意(ゆにーく)でなければなりません。

使用例は前述のemployeesテーブルのidカラムです。

id INT AUTO_INCREMENT PRIMARY KEY

この定義により、idカラムは自動的に増加し、各レコードに一意のIDを提供します。

ユニークキー(UNIQUE KEY)とその利用方法

ユニークキーは、指定されたカラム内の全ての値が一意であることを保証する制約です。

重複するデータ入力を防ぐのが目的。

テーブル内に主キーとは別に、複数のユニークキーを持つことも可能です。

例として、employeesテーブルに社員のメールアドレスを保存するemailカラムを追加。

その値が一意であることを保証したい場合のコードを見てみましょう。

ALTER TABLE employees ADD email VARCHAR(100) UNIQUE;

emailカラムを追加し、ユニークキー制約が適用されます。

同じメールアドレスを持つ2人以上の社員をテーブルに追加できません。

外部キー(FOREIGN KEY)制約の解説と活用

外部キー制約は、あるテーブルのカラムが他のテーブルの主キーまたはユニークキーと関連付けられることを示す制約です。

リレーショナルデータベースの関連性を保持できる仕組み。

例えば、departmentsという新しいテーブルを作成し、employeesテーブルと関連付ける場合を考えます。

この場合、department_idカラムを外部キーとしてemployeesテーブルに追加するのです。

ALTER TABLE employees ADD department_id INT,
ADD FOREIGN KEY (department_id) REFERENCES departments(id);

このSQLは、employeesテーブルにdepartment_idカラムを追加し、そのカラムをdepartmentsテーブルのidカラム(主キー)と関連付けます。

テーブル作成時の設定の詳細

こちらでは、テーブルを作成する際のさまざまな設定や選択肢について詳しく見ていきましょう。

これらの設定を適切に行うことで、データの保存や取得の効率、さらにはデータの整合性を向上させられます。

  • 成文セットと照合順序の指定方法
  • カラム毎の設定選択について
  • ストレージエンジンの指定とその効果

成文セットと照合順序の指定方法

成文セットとは、データベースやテーブル、カラムで使用される文字のエンコーディングを指定するためのものです。

照合順序は、文字列を比較する際のルールを決めるもの。

例えば、多言語のデータを扱う際には、UTF-8のようなユニバーサルな成文セットを使用すると良いでしょう。

CREATE TABLE multilanguage (
    text_content VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
);

multilanguageテーブルのtext_contentカラムで、UTF-8エンコーディングとユニコード照合順序を指定しています。

カラム毎の設定選択について

カラムの設定を選択する際には、データ型、デフォルト値、NULL許容性など、適切な型を指定してください。

適切な設定を選択することで、データの整合性とクエリの効率が向上するからです。

CREATE TABLE user_profiles (
    user_id INT NOT NULL,
    user_name VARCHAR(50) NOT NULL DEFAULT 'Guest',
    age INT DEFAULT NULL
);

user_iduser_nameはNULLを許容していないが、ageはNULLを許容しています。

ストレージエンジンの指定とその効果

MySQLには複数のストレージエンジンが存在し、それぞれに特有の特性と利点があります。

例えば、InnoDBは外部キー制約のサポートやトランザクションのサポートが特徴です。

テーブルを作成する際にストレージエンジンを指定できます。

CREATE TABLE transactional_data (
    id INT PRIMARY KEY,
    content VARCHAR(100)
) ENGINE=InnoDB;

transactional_dataテーブルをInnoDBエンジンで作成しています。

チェック制約とデフォルト値

こちらでは、カラムの値を制約する、デフォルト値を設定す流方法について見ていきます。

より実践向きな内容で、ビジネスでは多用する手法です。

  • チェック(CHECK)制約の意味と使用事例
  • カラムにデフォルト値の設定とその重要性

チェック(CHECK)制約の意味と使用事例

チェック制約は、特定のカラムに格納される値の制約を提供するものです。

この制約を使用することで、データベースのデータの整合性を保持できます。

例えば、年齢のカラムがあり、0以上の整数のみを受け入れたい場合には以下のように指定します。

CREATE TABLE persons (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT CHECK (age >= 0)
);

このテーブルでは、ageカラムに0未満の値を追加しようとするとエラーが発生します。

カラムにデフォルト値の設定とその重要性

デフォルト値は、特定のカラムにデータが指定されない場合に自動的に格納される値を定義するものです。

これは、データの一貫性を保つためや、意図しないNULL値の挿入を防ぐために役立ちます。

CREATE TABLE members (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    registration_date DATE DEFAULT CURRENT_DATE
);

新しいメンバーを追加する際にregistration_dateが指定されなかった場合、自動的にその日の日付が格納されます。

同名テーブルの作成とその影響

MySQLでの注意事項を見ていきます。

同名のテーブルについてのルールをご覧ください。

  • 同名のテーブル作成が可能か
  • 同名時の行動方針と注意点

同名のテーブル作成が可能か

MySQLでは、同じデータベース内で同名のテーブルを作成できません

もし同名のテーブルを作成しようとすると、エラーが発生します。

同名時の行動方針と注意点

同名のテーブルを作成する必要がある場合、まず現在のテーブルをリネームまたは削除しましょう。

ただしこれはリスクが伴う操作なので、データのバックアップを取るなどの前提措置が必要です。

まとめ

当記事では、MySQLのテーブル操作について学習してきました。

これらの知識は、効果的なデータベース設計の基礎となります。

MySQLの学習はこれだけでは終わりません。

公式ドキュメントやオンラインコースなど、多くのリソースが提供されていますので、更なる深化を求める方はこれらのリソースを活用してください。

タイトルとURLをコピーしました