各テーブルにはデフォルトの文字セットとデフォルトの照合順序があります。
テーブルの文字セットと照合順序の指定
CREATE TABLE および ALTER TABLE ステートメントには、テーブルの文字セットと照合順序を指定するための構文が用意されています。
CREATE TABLE table_name (column_list)
[[DEFAULT] CHARACTER SET [=] charset_name]
[COLLATE [=] collation_name]
ALTER TABLE table_name
[DEFAULT] CHARACTER SET [=] charset_name
[COLLATE [=] collation_name]
テーブル内の既存データの文字セットと照合順序を変更する構文は次のとおりです:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name COLLATE col_name;
例:
obclient> CREATE TABLE test_collation (c1 INT, c2 VARCHAR(32), c3 VARCHAR(32), PRIMARY KEY (c1),UNIQUE KEY idx_test_collation_c2(c2));
Query OK, 0 rows affected
//テーブルの文字セットと照合順序を変更
obclient> ALTER TABLE test_collation CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;
Query OK, 0 rows affected
// テーブル内の既存データの文字セットと照合順序を変更し、対応する設定も変更
obclient> ALTER TABLE test_collation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 0 rows affected
テーブルの文字セットと照合順序の選択
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の両方が指定されていない場合は、データベースの文字セットと照合順序を使用します。
各列定義で列の文字セットと照合順序が指定されていない場合、テーブルの文字セットと照合順序が列定義のデフォルト値として使用されます。