MySQL 5.1 リファレンスマニュアル :: 9 キャラクタセットサポート :: 9.3 デフォルトのキャラクタセットおよび照合順序の指定 :: 9.3.7 キャラクタセットと照合順序の割り当ての例
« 9.3.6 各国キャラクタセット

9.3.8 他のDBMSとの互換性 »
Section Navigation      [Toggle]
  • 9.3 デフォルトのキャラクタセットおよび照合順序の指定
  • 9.3.1 サーバのキャラクタセットおよび照合順序
  • 9.3.2 データベースのキャラクタセットおよび照合順序
  • 9.3.3 テーブルのキャラクタセットおよび照合順序
  • 9.3.4 カラムのキャラクタセットおよび照合順序
  • 9.3.5 文字列リテラルのキャラクタセットおよび照合順序
  • 9.3.6 各国キャラクタセット
  • 9.3.7 キャラクタセットと照合順序の割り当ての例
  • 9.3.8 他のDBMSとの互換性

9.3.7. キャラクタセットと照合順序の割り当ての例

MySQL でデフォルトのキャラクタセットと照合順序の値がどのように決定されるかを、以下の例で示します。

例1テーブルとカラム定義

CREATE TABLE t1
(
    c1 CHAR(10) CHARACTER SET latin1 COLLATE latin1_german1_ci
) DEFAULT CHARACTER SET latin2 COLLATE latin2_bin;

ここではlatin1キャラクタセットとlatin1_german1_ci照合順序がカラムに指定されています。定義は明示的なので、直接的といえます。なお、latin1カラムの保存先がlatin2テーブルになっていることに問題はありません。

例2テーブルとカラム定義

CREATE TABLE t1
(
    c1 CHAR(10) CHARACTER SET latin1
) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;

ここでは、latin1 キャラクタセットとデフォルトしょうごうじゅんじょがカラムに指定されています。自然な指定に目増すが、デフォルト照合順序はテーブルレベルから取り込まれません。latin1 のデフォルト照合順序は常にlatin1_swedish_ciです。したがって、カラムc1にはlatin1_swedish_ci の照合順序ではなく、latin1_danish_ciの照合順序が設定されます。

例3テーブルとカラム定義

CREATE TABLE t1
(
    c1 CHAR(10)
) DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;

ここでは、デフォルトキャラクタセットとデフォルト照合順序がカラムに指定されています。この場合に MySQL では、テーブルレベルまで検索してカラムのキャラクタセットと照合順序が決定されます。したがって、カラム c1 のキャラクタセットはlatin1、照合順序はlatin1_danish_ciとなります。.

例4データベース、テーブル+カラム定義

CREATE DATABASE d1
    DEFAULT CHARACTER SET latin2 COLLATE latin2_czech_ci;
USE d1;
CREATE TABLE t1
(
    c1 CHAR(10)
);

キャラクタセットと照合順序を指定せずにカラムを作成します。テーブルレベルのキャラクタセットと照合順序も指定しません。この場合に MySQLでは、データベースレベルまでさかのぼって処理が決定されます。(データベースの設定はテーブルの設定になり、そしてカラムの設定になります。)したがって、カラム c1 のキャラクタセットはlatin1、照合順序はlatin1_czech_ciとなります。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates