MySQLの文字セットと比較ルール
クライアントとサーバのMySQLの間でエンコードされた文字列の通信を送信する必要があるので、それは必然的に、トランスコードが生成されます
文字セット
MySQLは、utf8
されたutf8mb3
、わずか1〜3バイト文字を表す
utf-8md4
1〜4バイト文字を使用して
関連するパラメータ
MySQLサーバは、符号化に関連する以下のパラメータを有する
:文字セットパラメータ
character_set_server
のサーバ・レベル・キャラクタ・セット
character_set_database
(無駄データベース、文字セットのサーバーレベルのビューを選択しない場合)、データベースの現在の文字セット、読み取り専用現在のデータベースを変更することによって変更することができませんパラメータの
文字セット変換パラメータ:
character_set_client
クライアントは、文字セットの要求を送信し、サーバーは、要求は、文字セット、のためのコンテンツ取得要求を形成するためにデコードされ
character_set_connection
た内部サーバが要求を処理するときに使用する文字セットを、サーバはクライアントになります要求は、文字セットの形式で符号化された(データ処理の文字セットが異なることになるならば、変換)
character_set_results
サーバから返された結果がクライアントに返される文字セットの形式で符号化されます
Viewコマンド
MySQLは次のコマンドでサポートされているすべての文字セットを表示することができ、多くの文字セットをサポートしています
SHOW CHARACTER SET;
SHOW CHARSET;
これはDefault collation
、この比較ルールのデフォルトの文字セットであるMaxlen
文字に必要なバイトのこの文字セットの最大数です
他のパラメータを見ます
SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'character_set_client';
SHOW VARIABLES LIKE 'character_set_connection';
SHOW VARIABLES LIKE 'character_set_results';
設定コマンド
文字セットのパラメータ
サーバーレベル:
SET character_set_server 字符集名;
データベースレベル:
CREATE DATABASE 数据库名
CHARACTER SET 字符集名称;
ALTER DATABASE 数据库名
CHARACTER SET 字符集名称;
表レベル
CREATE TABLE 表名 (列的信息)
CHARACTER SET 字符集名称;
ALTER TABLE 表名
CHARACTER SET 字符集名称;
列レベル
CREATE TABLE 表名(列名 字符串类型 CHARACTER SET 字符集名称);
ALTER TABLE 表名 MODIFY 列名 字符串类型 CHARACTER SET 字符集名称 ;
文字セット変換パラメータを設定します。
一般的な3つのパラメータを容易にするためには、同じ文字セットに設定されますでは
、次のコマンドは、同時に3つのパラメータを設定することができます使用します
SET NAMES 字符集名;
もちろん、あなたが個別に設定することができます
SET character_set_client = 字符集名;
SET character_set_connection = 字符集名;
SET character_set_results = 字符集名;
比較ルール
比較照合規則は時々のために、所定の文字列のサイズを比較するために参照される
各種の比較ルールを有していてもよく、同じ文字を
命名規則
各文字セットは、これらのルールを比較するために命名規則、比較ルールの多様に対応することができ
- 比較すると、対応する文字セット名で始まる名前を支配します
- 主に中央部分のためにどのような言語を表し
- サフィックスは次のとおりです。
`_ai` | アクセントを区別しません | いいえアクセントません |
`_as` | 敏感なアクセント | アクセント |
`_ci` | 大文字小文字を区別しません | 大文字と小文字を区別しません |
`_cs` | 大文字と小文字を区別 | 大文字と小文字を区別する |
`_bin` | バイナリ | バイナリモードの比較 |
例:
utf8_spanish_ci
スペイン語の比較で表現は大文字と小文字を区別しません
関連するパラメータ
collation_server
サーバレベルの比較は、ルール
collation_database
(サーバレベルの比較規則を見て、無駄データベースを選択しない場合)、データベースの現在のルールの比較を、読み取り専用現在のデータベースのパラメータを変更することによって変更することができません
Viewコマンド
比較ルールは、それらを全て以上をリストには、対応する文字セットに基づいてフィルタリングすることができます
SHOW COLLATION;
SHOW COLLATION LIKE 'utf8\_%';
これはCharset
、対応する文字セットことを示していることはDefault
、デフォルトの比較ルールかどうかを示します
設定コマンド
より多くのルールパラメータを設定します。
サーバーレベル:
SET collation_server 比较规则名;
データベースレベル:
CREATE DATABASE 数据库名
COLLATE 比较规则名称;
ALTER DATABASE 数据库名
COLLATE 比较规则名称;
表レベル
CREATE TABLE 表名 (列的信息)
COLLATE 比较规则名称;
ALTER TABLE 表名
COLLATE 比较规则名称;
列レベル
CREATE TABLE 表名(列名 字符串类型 COLLATE 比较规则名称);
ALTER TABLE 表名 MODIFY 列名 字符串类型 COLLATE 比较规则名称 ;
概要
唯一の文字セットまたは比較ルールのレベル、同じ規則または、対応する(デフォルト)に設定された文字を変更します、対応するコンパレータのレベル変更
データベースの作成時に文字セットとの比較の規則を指定しない場合は、デフォルトの使用サーバーレベルのパラメータは、
表の作成時に文字セットと比較ルールを指定していない、テーブルがデータベース使用してデフォルトパラメータ
列は、デフォルトパラメータのテーブルのカラムを使用するときに作成された文字セットと比較ルールを指定していません