このページについて
このページではMySQLで使えるキーの種類とその機能についての解説ページになります。データベースやテーブルの作成時に指定することもできますが、後から指定することもできます。それぞれのキーの機能を紹介するのでそれぞれ適したキーを使っていきましょう。
キーとNULLと一意
キーは簡単にいえばカラムに対して設定する目印みたいなものです。このキーは基本的には「一意の値」である必要があります。一意とは「そのテーブル中に同じ値を設定することができない」という意味になります。この設定できないのはキーに設定したカラムに対してだけなので、例えばキー設定していないカラムに同じ数字を入れることは可能です。
カラム1(PRIMARY) | カラム2(UNIQUE) | カラム3(キー未設定) |
1 | 1 | 3 |
2 | 2 | 3 |
仮にこのようなカラム1、カラム2、カラム3があったとします。カラム1にPRIMARY、カラム2にUNIQUEを設定したとします。このカラム1と2はそれぞれ一意の値しか設定できないため、それぞれ「カラム1の1と、カラム2の1」という感じで識別します。そしてその下は「カラム1の2と、カラム2の2」という感じで識別します。そして何もキーを設定していないカラム3は同じ値が入力されていても問題ありません。
そしてそれぞれのキーに対してNULLという特別なものが設定できたりできなかったりします。NULLは「値がない」みたいな感じの扱いとなります。これは数字の0ではなく、本当の意味で値が無いという意味になります。このNULLが設定出来るキーとできないキーがあります。それについてはそれぞれのキー解説で紹介します。
PRIMARYキー
別名は主キーと言ったりします。これはテーブル内に1つのみ設定可能です。そしてこの主キーにはNULLを設定できません。1つのテーブル内の複数カラムにPRIMARYキーを設定したのが以下の画像です。見ての通り、NULLが「いいえ」となっていて、設定することができないことが明記されています。ちなみに下のように3カラムに対してPRIMARY設定した場合は「3つまとめて一意である」必要があります。
あとからnullのようにテキストとして入力するのは可能ですが、デフォルト値をNULLにすることは不可能です。
UNIQUEキー
ユニークキーと呼ばれるものです。これもPRIMARYキーと同じく各テーブルの複数カラムに幾つでも設定できます。PRIMARYキーと違う点はNULLを格納出来る点です。以下は2カラムにユニーク設定をし、etcカラムを変更してデフォルト値のNULLを許可しています。
INDEXキー
インデックスキーは上記の2つと違い、検索を早くするために特化したものです。これは一意とかそういうのは一切関係ありません。とにかく検索の処理速度を速くしたい場合に特定のカラムにインデックスを付与します。そうすると検索する時にインデックスを元に検索順序を再構築して検索します。
インデックスがないとMySQLの検索は1行ずつ確認していき、該当の場所かどうかを確認します。簡単にいえばWHERE句で検索するときに爆速で探し出せます。
キーのまとめ
キーはそれぞれ固有の値を持っているものと、検索を高速にする機能を持っていたりします。それぞれ用途に応じて使い分けましょう。
- MySQLの用語集
- MySQLでよく使う・よく見る用語集です。知っておくと検索とかも便利になります。
- ローカル環境の整え方
- MAMPを使ってローカル環境を整える方法を紹介。
- MySQLデータベースに接続する方法
- MAMPのデータベースと、レンタルサーバーのデータベースに接続する方法
- MySQLの基本コマンド
- MySQLへ接続してまず使う基本コマンドの一覧です。
- データベースの作成
- ターミナル・phpMyAdminでのデータベースの作成方法をそれぞれ解説。
- テーブルの作成
- ターミナル・phpMyAdminのそれぞれでテーブルを作成する方法と、作成と同時にPRIMARYやUNIQUEの付与などの方法を紹介。
- キーの種類と機能
- カラムに設定出来るキーの種類と機能を解説。
- 正規化
- リレーショナルデータベースを使う上で必須となる正規化について。データの追加や更新などで手間を省く方法としても使えます。
- ALTER TABLE
- ALTER TABLE構文を使って作成済みのテーブルに対して操作を行う。PRIMARYの付与やカラムの移動・名前変更・追加・削除なども行えます。
- INSERT構文
- INSERT構文を使って指定テーブルにデータ(行)を挿入する方法の解説です。
- UPDATE構文
- UPDATE構文を使って指定テーブルのカラムを一括更新、もしくは指定レコードの指定カラムのみを更新する方法の解説です。
- SELECT構文
- SELECT構文を使って指定したテーブルからデータを取得する方法の解説です。
- JOIN
- JOINを使ってテーブル同士を結合する方法の解説です。