MySQLで扱うデータベース、テーブル、インデックス、カラムなどは、「識別子」と呼ばれます。言い方を変えると、データベース名やテーブル名などをまとめた呼称が識別子です。
今回は、MySQLにおける識別子の制限や気をつけるべきポイントについて説明します。
MySQLの識別子で使える文字・記号
MySQLにおける識別子には、英数字・記号を使用することができ、内部でUnicodeに変換されます。記号に関しては、一部の記号を除き使用することができます。
識別子は、英数字からでも記号からでも始めることができます。ただし、データベース名、テーブル名、およびカラム名は、空白文字で終えることはできません。
識別子に引用符を使う場合
MySQLでは、英数字とドル「$」、下線「_」を使った識別子は引用符で囲む必要はありません。
引用符が必要になるのは、識別子が予約語と同じである場合と、特殊文字が含まれる場合、数字のみで構成された識別子の場合です。この時に使う引用符は、「`(バッククォート、リバースシングルクォート)」です。
Mac、 Windowsでバッククォートを入力する方法
日本向けのJISキーボードの場合、Mac、Windowsともにバッククォートは、「Shiff」+「@」で入力できます。USキーボードの場合、キーボードに「`(バッククォート)」があるので、それで入力してください。
MySQLにおける識別子の最大長
データベース名、テーブル名、カラム名、インデックス名は全て64byteまでとなっています。64文字ではないので、注意が必要です。
MySQLにおける予約語
MySQLでは、いくつかの単語が予約語に指定されています。予約語と同じ名前の識別子は、混乱を招くことから避けるべきです。
既に存在するテーブルやカラムが予約語の場合、引用符で囲むことでクエリを実行できます。
MySQL5.6の予約語
GROUP、KEYS、OPTION、TABLESなど使われやすい単語も予約語となっているので注意してください。予約語の一覧は、MySQLの公式サイト(5.6)で確認できます。