web-dev-qa-db-ja.com

MySQLでは、どの照合順序を選択すればよいですか?

PhpMyAdminを使用して新しいMySQLデータベースを作成するときに、照合順序を選択するオプションがあります(例:-default、armscii8、ascii、...、UTF-8)。私が知っているのはUTF-8です。これは常にHTMLソースコードで見られるためです。しかし、デフォルトの照合は何ですか?これらの選択の違いは何ですか?どれを使用すればよいですか?

36
bbtang

照合は実際にはデフォルトではありません。最初の選択肢としてデフォルトの照合が提供されます。

私たちが話しているのは collat​​ion 、またはデータベースがテキストタイプで使用する文字セットです。デフォルトのオプションは通常、地域の設定に基づいているため、グローバル化を計画していない限り、通常はpeachy-keenです。

照合順序は、大文字と小文字の区別も決定します(つまり、「Big」==「big」ですか?CIの場合はそうです)。すべてのオプションについて MySQLリスト を確認してください。

18
Eric

照合順序は、文字列の照合と並べ替えを実行する方法をデータベースに通知します。文字セットと一致する必要があります。

UTF-8を使用する場合、照合順序はutf8_general_ciにする必要があります。これはUnicode順でソートされ(大文字と小文字は区別されません)、ほとんどの言語で機能します。また、ASCIIおよびLatin1の順序も保持します。

デフォルトの照合は通常、latin1です。

25
ZZ Coder

短い答え:MySqlとMariaDBで照合を処理するときは、常にutf8mb4(具体的にはutf8mb4_unicode_ci)を使用してください。

長い答え:

MySQLのutf8エンコーディングは、適切なUTF-8エンコーディングとは異なるため、扱いにくい名前が付けられています。データの損失やセキュリティの脆弱性につながる可能性がある、完全なUnicodeサポートは提供していません。

幸い、MySQL 5.5.3(2010年初頭にリリース)は、utf8mb4と呼ばれる新しいエンコーディングを導入しました。これは、適切なUTF-8にマップし、Unicodeを完全にサポートします。

ここで全文を読む: https://mathiasbynens.be/notes/mysql-utf8mb4

特定のutf8mbを選択する場合は、utf8mb4_unicode_ciを使用して、パフォーマンスの欠点を最小限に抑え、目立たないように常にソートを適切に処理します。詳細はこちら: tf8_general_ciとutf8_unicode_ciの違いは何ですか

1
Chris Dev