Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


10.1.3.2 データベース文字セットおよび照合順序

各データベースにはデータベース文字セットとデータベース照合順序があります。CREATE DATABASE および ALTER DATABASE ステートメントには、データベース文字セットおよび照合順序を指定するためのオプション句があります。

CREATE DATABASE db_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]

ALTER DATABASE db_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]

SCHEMA というキーワードは DATABASE の代わりに使用できます。

すべてのデータベースオプションは、データベースディレクトリ内の db.opt というテキストファイルに格納されます。

CHARACTER SET および COLLATE 句を使用すると、文字セットと照合順序が異なる複数のデータベースを同一の MySQL Server に作成できます。

例:

CREATE DATABASE db_name CHARACTER SET latin1 COLLATE latin1_swedish_ci;

MySQL では、データベース文字セットとデータベース照合順序が次のように選択されます。

  • CHARACTER SET XCOLLATE Y の両方が指定されている場合、文字セット X と照合順序 Y が使用されます。

  • CHARACTER SET X は指定されているが COLLATE は指定されていない場合、文字セット X とそのデフォルト照合順序が使用されます。各文字セットのデフォルトの照合順序を確認するには、SHOW COLLATION ステートメントを使用します。

  • COLLATE Y は指定されているが CHARACTER SET は指定されていない場合、Y に関連付けられた文字セットと照合順序 Y が使用されます。

  • これ以外の場合は、サーバー文字セットとサーバー照合順序が使用されます。

デフォルトのデータベースに対する文字セットと照合順序は、character_set_database および collation_database システム変数の値から判別できます。デフォルトのデータベースが変わるたびに、サーバーはこれらの変数を設定します。デフォルトのデータベースがない場合、変数は、character_set_server および collation_server という対応するサーバーレベルのシステム変数と同値になります。

特定のデータベースのデフォルト文字セットおよび照合順序を確認するには、次のステートメントを使用します。

USE db_name;
SELECT @@character_set_database, @@collation_database;

また、デフォルトのデータベースを変更しないで値を表示するには、次のステートメントを使用します。

SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'db_name';

データベース文字セットおよび照合順序は、サーバー操作の次の側面に影響します。

  • CREATE TABLE ステートメントでは、テーブル文字セットおよび照合順序が指定されていない場合、データベース文字セットおよび照合順序がテーブル定義のデフォルト値として使用されます。これをオーバーライドするには、CHARACTER SET および COLLATE テーブルオプションを明示的に指定します。

  • CHARACTER SET 句を含まない LOAD DATA ステートメントでは、サーバーは、character_set_database システム変数によって示された文字セットを使用して、ファイル内の情報を解釈します。これをオーバーライドするには、CHARACTER SET 句を明示的に指定します。

  • ストアドルーチン (ストアドプロシージャーおよびストアドファンクション) では、CHARACTER SET 属性も COLLATE 属性も宣言に含まれていない文字データパラメータの文字セットおよび照合順序として、ルーチンの作成時に有効なデータベース文字セットおよび照合順序が使用されます。これをオーバーライドするには、CHARACTER SET および COLLATE 属性を明示的に指定します。


User Comments
Sign Up Login You must be logged in to post a comment.