MySQLの文字セットと照合は、優先項目のトップダウンリストとして解釈できます。最上位が最も優先度が低く、最下位が最も優先度が高くなります。
優先順位が最も高く、最も優先度が低い:
- サーバー照合
- 接続固有の照合
- データベース照合
- テーブル照合
- 列の照合
- クエリ照合(
CAST
を使用) またはCONVERT
)
サーバー照合 my.cnf
内のいずれかに設定されているサーバーによって設定されます またはサーバーがソースコードから構築されたとき。デフォルトでは、これは通常latin1
になります またはutf8
、プラットフォームによって異なります。
接続固有の照合 SET NAMES 'utf8' COLLATE 'utf8_unicode_ci';
のようなクエリを使用してクライアントによって設定されます 。ほとんどのクライアントは接続固有の照合を設定しないため、サーバーは上記で説明したように独自のデフォルトを使用します。
データベース照合 データベースの作成時に設定するか、後で更新して手動で設定します。指定しない場合は、次に上位レベルの照合が使用されます。これは、接続固有の照合またはサーバーの照合のいずれかになります。
テーブル照合 データベースの照合と同じですが、空白のままにすると、データベースがデフォルトとして使用され、次に接続固有、最後にサーバーの照合が使用されます。
列の照合 テーブルの照合をデフォルトとして使用します。照合セットがない場合は、チェーンをたどって使用する照合を見つけ、他のすべてが設定されていない場合はサーバーで停止します。
クエリ照合 CAST
を使用してクエリで指定されます またはCONVERT
、ただし、それ以外の場合は、チェーン内で次に使用可能な照合を使用します。関数を使用しない限り、これを設定する方法はありません。
マニュアルページ