MariaDBの文字セット調査はSHOW CHARACTER SETにお任せ: 使い方とサンプルコード


MariaDB の SHOW CHARACTER SET ステートメントは、データベースサーバーで使用可能なすべての文字セットと、現在の接続で使用されている文字セットを表示します。このステートメントは、データベースの文字エンコーディングを理解し、適切な文字セットを選択する必要がある場合に役立ちます。

構文

SHOW CHARACTER SET [LIKE 'pattern']
  • LIKE 'pattern': オプション。一致する文字セット名のパターンを指定します。

SHOW CHARACTER SET;

このコマンドを実行すると、次のようになります。

+--------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Character Set             | Description                                                                                                                                                                                                                                                                                             |
+--------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| armscii8_general_ci        | An 8-bit character set that supports most of the characters used in Western European languages, as well as some additional characters from other languages.                                                                                                               |
| ascii                      | A 7-bit character set that supports the basic ASCII characters.                                                                                                                                                                                                       |
| big5_chinese_ci           | A Chinese character set that supports the Big5 encoding.                                                                                                                                                                                                     |
| binary                     | A binary character set that does not interpret any characters.                                                                                                                                                                                               |
| cp1250_czech_ci          | A Central European character set that supports the Czech language.                                                                                                                                                                                          |
| cp1250_polish_ci          | A Central European character set that supports the Polish language.                                                                                                                                                                                            |
| cp1251_cyrillic_ci       | A Cyrillic character set that supports the Russian language.                                                                                                                                                                                          |
| cp1256_hungarian_ci      | A Central European character set that supports the Hungarian language.                                                                                                                                                                                        |
| cp1257_bulgarian_ci      | A Cyrillic character set that supports the Bulgarian language.                                                                                                                                                                                        |
| cp1258_gb2312_chinese_ci | A Chinese character set that supports the GB2312 encoding.                                                                                                                                                                                          |
| cp850                     | A Western European character set that supports the Latin alphabet.                                                                                                                                                                                           |
| ...                        | ...                                                                                                                                                                                                                                                      |
+--------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

現在の接続で使用されている文字セットを表示するには

SELECT @@character_set_client;

データベースで使用されているデフォルトの文字セットを表示するには

SELECT @@character_set_database;

特定のテーブルの列で使用されている文字セットを表示するには

SHOW CREATE TABLE table_name;

文字セットを変更する

文字セットを変更するには、ALTER DATABASE または ALTER TABLE ステートメントを使用します。

ALTER DATABASE mydatabase CHARACTER SET utf8;

このコマンドは、データベース mydatabase のデフォルトの文字セットを utf8 に変更します。

ALTER TABLE mytable MODIFY COLUMN mycolumn VARCHAR(255) CHARACTER SET utf8;

このコマンドは、テーブル mytablemycolumn 列の文字セットを utf8 に変更します。

  • すべてのクライアントとアプリケーションが新しい文字セットをサポートしていることを確認してください。
  • 文字セットを変更すると、データの互換性が失われる可能性があります。変更を行う前に、必ずバックアップを取ってください。


SHOW CHARACTER SET;

例 2: 現在の接続で使用されている文字セットを表示する

SELECT @@character_set_client;

例 3: データベースで使用されているデフォルトの文字セットを表示する

SELECT @@character_set_database;

例 4: 特定のテーブルの列で使用されている文字セットを表示する

SHOW CREATE TABLE mytable;

例 5: データベースのデフォルトの文字セットを UTF-8 に変更する

ALTER DATABASE mydatabase CHARACTER SET utf8;

例 6: テーブルの列の文字セットを UTF-8 に変更する

ALTER TABLE mytable MODIFY COLUMN mycolumn VARCHAR(255) CHARACTER SET utf8;

説明

  • 文字セット utf8 は、Unicode に基づく汎用性の高い文字セットです。必要に応じて、別の文字セットに変更できます。
  • 実際のデータベースやテーブルの名前は、ご自身の環境に合わせて変更してください。
  • 上記の例では、mydatabase という名前のデータベースと、mytable という名前のテーブルを使用しています。
  • すべてのクライアントとアプリケーションが新しい文字セットをサポートしていることを確認してください。
  • 文字セットを変更すると、データの互換性が失われる可能性があります。変更を行う前に、必ずバックアップを取ってください。


INFORMATION_SCHEMA テーブルを使用する

INFORMATION_SCHEMA データベースには、すべてのデータベース、テーブル、列に関するメタデータが格納されています。このデータベースを使用して、文字セット情報を含むさまざまな情報を取得できます。

SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS;

このクエリは、利用可能なすべての文字セットとその説明を表示します。

特定のデータベースのデフォルトの文字セットを表示するには

SELECT DEFAULT_CHARACTER_SET_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = 'mydb';

特定のテーブルの列の文字セットを表示するには

SELECT COLUMN_NAME, CHARACTER_SET_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'mytable'
AND TABLE_SCHEMA = 'mydb';

システム変数を使用する

MariaDB には、character_set_clientcharacter_set_connectioncharacter_set_database などのさまざまなシステム変数が用意されています。これらの変数は、現在の接続で使用されている文字セットに関する情報を提供します。

SELECT @@character_set_client;

このコマンドは、現在の接続で使用されているクライアント文字セットを表示します。

SHOW CREATE TABLE ステートメントを使用する

SHOW CREATE TABLE ステートメントを使用して、テーブルの定義を表示できます。この定義には、各列のデータ型と文字セット情報が含まれています。

SHOW CREATE TABLE mytable;

このコマンドは、mytable テーブルの定義を表示します。

クライアントライブラリを使用する

ほとんどの MariaDB クライアントライブラリは、データベースの文字セット情報を取得するための関数を提供しています。これらの関数は、プログラミング言語内で文字セット情報にアクセスするのに役立ちます。

(MySQLi を使用する場合)

<?php

$mysqli = new mysqli("localhost", "username", "password", "mydb");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

$charset = $mysqli->character_set_name();

printf("Client character set: %s\n", $charset);

$mysqli->close();

?>

このコードは、MySQLi を使用して現在の接続で使用されているクライアント文字セットを取得します。