MariaDBのさまざまなレベルで文字セットと照合を指定できます。それらは、接続レベル、サーバーレベル、データベースレベル、テーブルレベル、さらには列レベルで指定できます。
クエリで照合を指定して、前述のレベルで以前に指定された照合を上書きすることもできます。
文字セットと照合を列レベルで設定するには、CREATE TABLE
を使用します ステートメントまたはALTER TABLE
ステートメント(テーブルを作成するか変更するかによって異なります)。
テーブルを作成するとき
テーブルを作成するときに列に照合と文字セットを設定する例を次に示します。
CREATE TABLE Events (
EventId INT AUTO_INCREMENT NOT NULL,
EventName VARCHAR(255)
CHARACTER SET utf8
COLLATE utf8_spanish_ci,
PRIMARY KEY (EventId)
);
ここでは、文字セットと照合を列レベルで指定しました。テーブルレベルで設定することもできます。
既存の列を変更する
既存の列の照合と文字セットを変更する例を次に示します。
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET latin5 COLLATE latin5_turkish_ci;
EventName
列は新しい照合と文字セットを使用するようになりました。
列を確認する
列の照合と文字セットを確認する方法はいくつかあります。これが1つです:
SELECT
column_name,
character_set_name,
collation_name
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';
結果:
+-------------+--------------------+-------------------+ | column_name | character_set_name | collation_name | +-------------+--------------------+-------------------+ | EventName | latin5 | latin5_turkish_ci | +-------------+--------------------+-------------------+
文字セットに対して照合が有効である必要があります
照合と文字セットの両方を設定するときは、選択した文字セットに対して照合が有効であることを確認する必要があります。その逆も同様です。そうでない場合は、エラーが返されます。
指定された文字セットに対して無効な照合を使用して指定する例を次に示します。
ALTER TABLE Events
MODIFY EventName VARCHAR(255)
CHARACTER SET utf16 COLLATE latin5_turkish_ci;
結果:
ERROR 1253 (42000): COLLATION 'latin5_turkish_ci' is not valid for CHARACTER SET 'utf16'
これは、選択した照合が、選択した指定した文字セットに対して無効であることを示しています。
一致する照合と文字セットのリストについては、MariaDBでサポートされている照合の完全なリストまたはMariaDBでサポートされている文字セットの完全なリストを参照してください。
照合または文字セットのみを指定する
照合のみまたは文字セットのみ(またはどちらも指定しない)を指定してもかまいません:
- 文字セットのみが提供されている場合、その文字セットのデフォルトの照合が使用されます。
- 照合のみが提供されている場合は、関連する文字セットが使用されます。
- 照合も文字セットも指定されていない場合は、テーブルのデフォルトが使用されます。
より多くのバイトを必要とする文字セットへの変換
テーブルレベルで文字セットを変換することもできます。テーブルレベルで文字セットを変換する場合、MariaDBがデータ型を新しい文字セットをより適切に処理できるものに自動的に変換する可能性があります。
ただし、MODIFY
を使用する場合 個々の列でデータ型を明示的に指定すると(前の例で行ったように)、MariaDBがデータ型を変換できないようにします。
バイナリへの変換
CONVERT TO CHARACTER SET binary
CHAR
を変換します 、VARCHAR
およびTEXT
BINARY
への列 、VARBINARY
およびBLOB
それぞれ。
これが完了すると、そのような列には文字セットがなくなります。また、将来のCONVERT TO CHARACTER SET
の影響を受けなくなります。 ステートメント。
MariaDBでの照合と文字セットの確認
チェックするレベル(サーバー、データベース、テーブル、列、接続など)に応じて、MariaDBの照合と文字セットをチェックするさまざまな方法があります。例については、MariaDBでの照合の表示を参照してください。