文字セットと照合順序を使用する
MySQL は多数の文字セットをサポートしています。サポートされている文字セットの完全なリストを表示するには、次のステートメントを使用します。
入力:
show character set;
分析: このステートメントは、使用可能なすべての文字セットを、各文字セットの説明とデフォルトの照合順序とともに表示します。
サポートされている照合順序の完全なリストを表示するには、次のステートメントを使用します。
入力:
show collation;
分析: このステートメントは、使用可能なすべての照合順序と、それらが適用される文字セットを表示します。一部の文字セットには複数の照合順序があることがわかります。たとえば、latin1 にはさまざまなヨーロッパ言語用の照合順序がいくつかあり、多くの照合順序は 2 回表示されます。1 回目は大文字と小文字を区別するもの (_cs で示されます)、もう 1 回は大文字と小文字を区別しないもの (_ci で示されます) です。
通常、システム管理者はインストール時にデフォルトの文字セットと照合順序を定義します。さらに、データベースの作成時にデフォルトの文字セットと照合順序を指定することもできます。使用される文字セットと照合順序を確認するには、次のステートメントを使用できます:
Enter:
show variables like 'character%'; show variables like 'collation%';
実際には、文字セットがサーバー全体 (またはデータベース全体) の設定になることはほとんどありません。異なるテーブル、さらには異なる列には異なる文字セットが必要になる場合があり、テーブルの作成時に両方を指定できます。
テーブルの文字セットと照合順序を指定するには、句を指定して CREATE TABLE を使用します。
入力:
create table mytable ( columnn1 int, columnn2 varchar(10) )default character set hebrew collate hebrew_general_ci;
分析: このステートメントは 2 つの列を持つテーブルを作成し、文字セットと照合順序を指定します。
この例では、CHARACTER SET と COLLATE の両方を指定しています。一般に、MySQL は使用する文字セットと照合順序を次のように決定します。
1. CHARACTER SET と COLLATE の両方が指定されている場合、これらの値が使用されます。
2. CHARACTER SET のみが指定されている場合は、この文字セットとそのデフォルトの照合順序が使用されます (SHOW CHARACTER SET の結果に示されているように)。
3. CHARACTER SET も COLLATE も指定されていない場合は、データベースのデフォルトが使用されます。
MySQL では、文字セットと照合テーブルの範囲を指定できることに加えて、以下に示すように、列ごとにそれらを設定することもできます:
入力:
create table mytable ( columnn1 int, columnn2 varchar(10), columnn3 varchar(10) character set latin1 collate latin1_general_ci latin_grneral_ci )default character set hebrew collate hebrew_general_ci;
分析: ここで、CHARACTER SET はテーブル全体に対して指定されています。特定の列と COLLATE も同様です。
前に述べたように、照合順序は、ORDER BY 句を使用して取得したデータを並べ替える際に重要な役割を果たします。テーブルの作成時とは異なる照合順序で特定の SELECT ステートメントを順序付ける必要がある場合は、SELECT ステートメント自体で実行できます:
入力:
select * from customers order by lastname,firstname collate latin1_general_cs;
分析: この SELECT は COLLATE を使用して代替照合順序を指定します。 (この例では、大文字と小文字を区別する校正用です)。これは明らかに結果の並べ替え順序に影響します。
一時的な大文字と小文字の区別 上記の SELECT ステートメントは、通常は大文字と小文字が区別されないテーブルに対して、大文字と小文字を区別した検索を実行する手法を示しています。もちろん、その逆も可能です。
SELECT のその他の COLLATE 句 ここで見られるように ORDER BY 句で使用されることに加えて、COLLATE は GROUP BY、HAVING、集計関数、エイリアスなどでも使用できます。
最後に、どうしても必要な場合は、文字列を文字セット間で変換できることは注目に値します。これを行うには、Cast() 関数または Convert() 関数を使用します。
【関連する推奨事項】
3. MySQL トランザクション - 保持ポイントの使用とデフォルトのコミット動作の変更についての詳細な説明
4. MySQLトランザクション-ROLLBACK、COMMITの使い方の詳細説明
以上がMySQL 文字セットと照合順序のチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。