MariaDBのさまざまなレベルで文字セットと照合を指定できます。それらは、接続レベル、サーバーレベル、データベースレベル、テーブルレベル、さらには列レベルで指定できます。
クエリで照合を指定して、前述のレベルで以前に指定された照合を上書きすることもできます。
テーブルレベルで文字セットと照合を設定するには、CREATE TABLE
を使用します ステートメントまたはALTER TABLE
ステートメント(テーブルを作成するか変更するかによって異なります)。
テーブルを作成するとき
テーブルを作成するときに照合と文字セットを設定する例を次に示します。
CREATE TABLE Products (
ProductId CHAR(10),
ProductName VARCHAR(255) NOT NULL,
PRIMARY KEY (ProductId))
CHARACTER SET latin1
COLLATE latin1_general_ci;
これにより、Products
というテーブルが作成されます latin1
を使用 文字セット、およびlatin1_general_ci
の照合 。
既存のテーブルを変更する
既存のテーブルの照合と文字セットを変更する例を次に示します。
ALTER TABLE Products
CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;
新しい照合と文字セットを使用するようになりました。
CONVERT TO
を省略することもできます パート:
ALTER TABLE Products
CHARACTER SET utf8
COLLATE utf8_spanish_ci;
文字セットに対して照合が有効である必要があります
照合と文字セットの両方を設定するときは、選択した文字セットに対して照合が有効であることを確認する必要があります。その逆も同様です。そうでない場合は、エラーが返されます。
指定された文字セットに対して無効な照合を使用して指定する例を次に示します。
ALTER TABLE Products
CHARACTER SET latin1
COLLATE utf8_spanish_ci;
結果:
ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'
これは、選択した照合が、選択した指定した文字セットに対して無効であることを示しています。
一致する照合と文字セットのリストについては、MariaDBでサポートされている照合の完全なリストまたはMariaDBでサポートされている文字セットの完全なリストを参照してください。
照合または文字セットのみを指定する
照合のみまたは文字セットのみ(またはどちらも指定しない)を指定してもかまいません:
- 文字セットのみが提供されている場合、その文字セットのデフォルトの照合が使用されます。
- 照合のみが提供されている場合は、関連する文字セットが使用されます。
- 照合も文字セットも指定されていない場合は、テーブルのデフォルトが使用されます。
より多くのバイトを必要とする文字セットへの変換
VARCHAR
の場合 またはTEXT
列、CONVERT TO CHARACTER SET
新しい列が元の列と同じ数の文字を格納するのに十分な長さになるように、必要に応じてデータ型を変更します。
たとえば、ASCII TEXT
列は1文字あたり1バイトを必要とするため、列は最大65,535文字を保持できます。列がutf8に変換される場合、各文字に最大3バイトが必要になる可能性があるため、列はMEDIUMTEXT
に変換されます。 (最大長は16,777,215です)同じ数の文字を保持できるようにします。
このようなデータ型の変更を行わせたくない場合は、MODIFY
を使用してください 代わりに、個々の列に。
例:
ALTER TABLE Products
MODIFY ProductName VARCHAR(255)
CHARACTER SET utf8;
バイナリへの変換
CONVERT TO CHARACTER SET binary
CHAR
を変換します 、VARCHAR
およびTEXT
BINARY
への列 、VARBINARY
およびBLOB
それぞれ。
これが完了すると、そのような列には文字セットがなくなります。また、将来のCONVERT TO CHARACTER SET
の影響を受けなくなります。 ステートメント。
MariaDBでの照合と文字セットの確認
チェックするレベル(サーバー、データベース、テーブル、列、接続など)に応じて、MariaDBの照合と文字セットをチェックするさまざまな方法があります。例については、MariaDBでの照合の表示を参照してください。