====== MariaDB10.4 サーバ情報の取得 ====== phpMyAdmin 4.9.0.1 (MariaDB 10.4.6) --- //[[http://www.y2sunlight.com|y2sunlight]] 2019-10-15// [[mariadb:top|MariaDBに戻る]] 関連記事 * [[mariadb:10.4:phpmyadmin|MariaDB10.4 phpMyAdminの使い方]] * [[mariadb:10.4:mysqli|MariaDB10.4 PHPサンプルプログラム]] * [[mariadb:10.4:system-variables|MariaDB10.4 システム変数の参照と変更]] * MariaDB10.4 サーバ情報の取得 * [[mariadb:10.4:transaction|MariaDB10.4 トランザクション]] 以下「MySQL」は「MariaDB」に読み替えて下さい。 ---- ===== 概要 ===== 前の [[mariadb:10.4:system-variables|システム変数の参照と変更]] ではSHOW VARIABLESを使ってシステム変数を参照しましたが、SHOW文にはこれ以外にもサーバに関するいろいろな情報を提供する形式があります。以下では、ストレージエンジン(テーブルタイプ)、文字セット、データベース、テーブルなどのサーバ情報を取得してみます。 尚、SHOW文については以下を参照して下さい。 > https://dev.mysql.com/doc/refman/8.0/en/show.html \\ ===== ストレージエンジンに関する情報 ===== ブラウザからサンプルプログラム(sqlfile.php)を実行します。 http://localhost/mysql/sqlfile.php?f=svinfo1.sql SHOW ENGINES; === 実行結果 === [{{:mariadb:10.4:sqlfile05.png?nolink|}}] SHOW ENGINESはストレージエンジンに関する情報を表示します。この表示から、InnoDBがデフォルトのストレージエンジンである事が分かります。デフォルトのストレージエンジンは、CREATE TABLEで使用されるデフォルトのテーブルタイプです。デフォルトのストレージエンジンは、サーバオプションファイル(my.ini)のmysqldセクション中で変更することができます。 {{fa>file-o}} ''{XAMPP Install Folder}/mysql/bin/my.ini'' [mysqld] default-storage-engine=Aria 実行時にデフォルトのストレージエンジンを変更するには、システム変数storage_engine を変えます。 set storage_engine=Aria; MySQLはマルチストレージエンジンに対応しています。同じデータベースの中に異なったストレージエンジンのテーブルを作成する事ができます。デフォルトのストレージエンジン以外でテーブルを作成するには、CREATE TABLE文のオプション(ENGINEまたはTYPE)で指定します。 CREATE TABLE syain( ・・・ ) ENGINE = Aria; \\ ===== 文字セットに関する情報 ===== ブラウザからサンプルプログラム(sqlfile.php)を実行します。 http://localhost/mysql/sqlfile.php?f=svinfo2.sql SHOW CHARACTER SET; === 実行結果 === [{{:mariadb:10.4:sqlfile06.png?nolink|}}] SHOW CHARACTER SETは全ての利用可能な文字セットを表示します。Charsetカラムは文字セット名です。漢字コードを指定するのに特に興味有る文字セット名はutf8mb4/utf8/ujis/sjisです。 Default collationカラムはデフォルトの照合順序名です。照合順序(collation)とは文字を比較する場合の順序付け規則の事です。各文字セットにはデフォルトの照合順序があります。 Maxlenカラムは1文字を格納するに要する最大のバイト数を表しています。 ==== UTF8について ==== 近年、Webプログラミングでは UTF8 を使用することが増えています。UTF8 の文字コードは次の2種類があります。 * ''utf8'' --- 文字ごとに最大3バイトを使用しBMP(基本多言語面)のみを含みます。 * ''utf8mb4'' --- 文字ごとに最大4バイトを使用しBMP(基本多言語面)に加え補助文字をサポートしています。 utf8は、''utf8mb3''と呼ばれることもあります。utf8mb4の補助文字としては[[https://ja.wikipedia.org/wiki/%E6%90%BA%E5%B8%AF%E9%9B%BB%E8%A9%B1%E3%81%AE%E7%B5%B5%E6%96%87%E5%AD%97|絵文字]]が有名で、au、docomo、SoftBankなどそれぞれの機種によって絵文字がサポートされています。 UTF8 の代表的な照合順序には、以下のものがあります。 * utf8_bin --- バイナリ照合。文字コードが一致した場合のみマッチ。 * utf8_general_ci --- 大文字・小文字を区別しない(半角同士 及び 全角同士) * utf8_unicode_ci --- 大文字・小文字、半角・全角、ひらがな・カタカナ、拗音/促音/濁音/半濁音と清音を区別しない * utf8mb4_general_ci --- utf8_general_ci と同じ。 * utf8mb4_unicode_ci --- utf8_unicode_ci と同じ。 > ''_bin'' は ''binary''、''_ci'' は ''case insensitive''(大文字・小文字を区別しない) の略として照合順序の名称に使用される接尾語です。 \\ ===== データベースに関する情報 ===== ブラウザからサンプルプログラム(sqlfile.php)を実行します。 http://localhost/mysql/sqlfile.php?f=svinfo3.sql SHOW CREATE DATABASE test; SHOW CREATE DATABASE test_utf8; === 実行結果=== [{{:mariadb:10.4:sqlfile07.png?nolink|}}] SHOW CREATE DATABASEはデータベースの作成情報を表示します。上の表示から、データベースtestの文字セットはlatin1で、test_utf8の方はutf8という事が分かります。本例では、test_utf8 は以下のSQL文で作成しました。 CREATE DATABASE test_utf8 DEFAULT CHARACTER SET utf8; \\ ===== テーブルに関する情報 ===== ブラウザからサンプルプログラム(sqlfile.php)を実行します。 http://localhost/mysql/sqlfile.php?f=svinfo4a.sql USE test; SET storage_engine = Aria; -- この設定は有効です SET character_set_database = sjis; -- この設定は無意味です DROP TABLE IF EXISTS syain; CREATE TABLE syain ( syain_no int(10) NOT NULL, syain_name varchar(50), bumon_no int(10), PRIMARY KEY (syain_no) ); SHOW CREATE TABLE syain; === 実行結果 === [{{:mariadb:10.4:sqlfile08.png?nolink|}}] SHOW CREATE TABLEはテーブルの作成情報を表示します。この例題での興味ある情報はテーブル作成時のオプション(ENGINとDEFAULT CHARSET)です。 システム変数storage_engineをAriaに変更しているのでsyainテーブルはAriaで作成されています。storage_engineを変更しなければInnoDBで作成されます。ストレージエンジンの変更はCREATE TABLEのオプションで指定する事もできます。 CREATE TABLE syain( ・・・ ) ENGINE = Aria; この例では、システム変数character_set_database をsjisに変更していますが、この設定は無意味です。テーブル作成時のデフォルトの文字セットは、データベース(test)の文字セットが使用されます。変更するにはCREATE TABLEのオプションで明示的に指定する必要があります。 CREATE TABLE syain( ・・・ ) DEFAULT CHARACTER SET = sjis; 以下は、utf8を文字セットに利用しているデータベース(test_utf8)を使った実行例です。 ブラウザからサンプルプログラム(sqlfile.php)を実行します。 http://localhost/mysql/sqlfile.php?f=svinfo4b.sql USE test_utf8; DROP TABLE IF EXISTS syain; CREATE TABLE syain ( syain_no int(10) NOT NULL, syain_name varchar(50), bumon_no int(10), PRIMARY KEY (syain_no) ); SHOW CREATE TABLE syain; === 実行結果 === [{{:mariadb:10.4:sqlfile09.png?nolink|}}] テーブル作成時のオプション(ENGINとDEFAULT CHARSET)は、ストレージエンジンがInnoDB、文字セットがutf8になり、全てデフォルト値が有効になっています。 \\