各データベースには、デフォルトの文字セットとデフォルトの照合順序があります。
データベースの文字セットと照合順序の指定
CREATE DATABASE ステートメントは、データベースの文字セットと照合順序を指定するために使用され、構文は以下のとおりです:
CREATE DATABASE database_name
[DEFAULT] CHARACTER SET [=] charset_name
[[DEFAULT] COLLATE [=] collation_name]
ALTER DATABASE database_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
ここで、CHARACTER SET と COLLATE 句を使用して、同一のOBServer上で異なる文字セットと照合順序を持つデータベースを作成できます。
データベースの文字セットを作成および変更する例は以下のとおりです:
/* ラテン文字データベースを直接作成 */
CREATE DATABASE latin1_db CHARSET latin1;
/* 既存のUTF8データベースをラテン文字データベースに変更 */
CREATE DATABASE db CHARSET=utf8mb4;
ALTER DATABASE db CHARSET latin1;
データベースの文字セットと照合順序の選択
OceanBaseデータベースは、以下の方法でデータベースの文字セットと照合順序を選択します:
CHARACTER SET charset_nameとCOLLATE collation_nameの両方が指定されている場合、文字セットcharset_nameと照合順序collation_nameを使用します。CHARACTER SET charset_nameが指定されているがCOLLATEが指定されていない場合、文字セットcharset_nameとそのデフォルトの照合順序を使用します。各文字セットのデフォルトの照合順序を確認するには、SHOW CHARACTER SETステートメントを使用してください。COLLATE collation_nameが指定されているがCHARACTER SETが指定されていない場合、collation_nameに関連付けられた文字セットと指定された照合順序を使用します。CHARACTER SETとCOLLATEのどちらも指定されていない場合、サーバーの文字セットと照合順序を使用します。
デフォルトのデータベースの文字セットと照合順序は、character_set_database および collation_database システム変数の値によって決定できます。指定されたデータベースのデフォルトの文字セットと照合順序を確認するには、次のステートメントを使用してください:
USE database_name;
SELECT @@character_set_database, @@collation_database;
または:
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'database_name';
例:
obclient> SET collation_database = 'latin1_swedish_ci';
Query OK, 0 rows affected