文字セットとは、記号とエンコーディングのセットです。 照合順序とは、文字セット内の文字を比較するためのルールを集めたものです。 架空の文字セットを例にして、文字セットと照合順序の違いを見てみましょう。
4 文字のアルファベットがあるとします: A
, B
, a
, b
。 各文字に数字を付けます: A
= 0, B
= 1, a
= 2, b
= 3。 文字 A
は記号、数字 0 は A
用の encoding で、4 文字すべてとそのエンコーディングの組合せは文字セットです。
A
と B
の 2 つの文字列値を比較するとします。 これを行う最も簡単な方法は、エンコーディングを確認することです: 0 (A
の場合)、1 (B
の場合)。 0 は 1 より小さいため、A
は B
より小さいと言います。 今ここで行なったのは、文字セットに対する照合順序の適用です。 照合順序はルールの集まりであり、この場合、ルールは「エンコーディングの比較」の 1 つだけになります。 これは可能な照合順序のうちでもっとも単純なものであり、バイナリ照合順序と呼ばれています。
しかし、小文字と大文字が同等であることを表すにはどうなるのでしょうか。 この場合、少なくとも 2 つのルールがあります: (1) 小文字の a
および b
を A
および B
と同等の文字として扱い、(2) エンコーディングを比較します。 これは大文字と小文字を区別しない照合順序と呼ばれます。 バイナリ照合順序よりも少し複雑になります。
実際には、ほとんどの文字セットに多数の文字があります: A
および B
だけでなく、アルファベット全体でもあり、数千文字を含む複数のアルファベットまたは東部手書きシステムに加えて、特殊記号や句読点も多数含まれる場合があります。 また、ほとんどの照合には、大文字と小文字を区別するかどうかだけでなく、アクセントを区別するかどうか (「「アクセント」」はドイツ語Ö
のように文字に添付されたマーク)、複数文字マッピング (ドイツ語照合のいずれかでÖ
= OE
となるルールなど) に関する多くのルールがあります。
MySQL では以下が可能です。
さまざまな文字セットを使用して文字列を格納します。
さまざまな照合順序を使用して文字列を比較します。
文字セットまたは照合順序が異なる文字列を、同じサーバー、同じデータベース、または同じテーブル内にも混在させます。
どのレベルでも文字セットと照合順序を指定できるようにします。
これらの機能を効果的に使用するには、使用可能な文字セットと照合順序、デフォルトの変更方法、および文字列演算子と関数の動作への影響を把握する必要があります。