MySQLでデータベースの一覧を取得する方法を解説
MySQLでデータベースの一覧を取得するには
MySQLに存在するデータベースの一覧を取得したい場合、information_schema.schemata テーブルを利用する方法が便利です。このテーブルには、サーバー内のすべてのスキーマ(データベース)に関する情報が格納されています。
基本構文
データベースの一覧を返すための基本構文は以下の通りです。
SELECT schema_name AS 任意の別名 FROM information_schema.schemata;
schema_name カラムには各データベースの名前が保存されているため、これを選択することで一覧を取得できます。AS 句を使えば、表示時のカラム名を自由に指定することも可能です。
実行例
実際に、別名を「DatabaseName」としてデータベース一覧を取得するクエリを見てみましょう。
mysql> SELECT schema_name AS DatabaseName FROM information_schema.schemata;
このクエリを実行すると、以下のような結果が出力されます。
+---------------------------+ | DatabaseName | +---------------------------+ | mysql | | information_schema | | performance_schema | | sys | | business | | sample | | hello | | test | | mybusiness | | databasesample | | schemasample | | universitydatabase | | education | | mydatabase | | database1 | | sampledatabase | | test3 | | javadatabase2 | | javasampledatabase | | rdb | | onetomanyrelationship | | webtracker | | web | | commandline | | hb_student_tracker | | bothinnodbandmyisam | | customertracker | | tracker | | demo | | customer_tracker_database | | login | | onlinebookstore | | customer-tracker | | web_tracker | | instant_app | | 1233 | +---------------------------+ 36 rows in set (0.00 sec)
上記の例では、36件のデータベースが登録されており、システム用のデータベース(mysql、information_schema、performance_schema、sys)から、ユーザーが作成した業務用・テスト用のデータベースまで、すべての一覧が表示されています。
SHOW DATABASES文との違い
なお、MySQLでは SHOW DATABASES; コマンドでも同様にデータベース一覧を取得できます。ただし、information_schema.schemata を使う方法には次のようなメリットがあります。
- 条件絞り込みが可能:
WHERE句を組み合わせることで、「特定の名前パターンに一致するデータベースだけ」を抽出できます。例:WHERE schema_name LIKE 'test%' - 他のテーブルと結合できる: スキーマ情報と他のメタデータを結合して、より詳細な情報を取得できます。
- 標準SQL準拠: information_schemaはSQL標準の仕組みのため、他のRDBMSでも類似の手法が使えます。
用途に応じて両方の方法を使い分けると、データベース管理がより効率的になります。
-
MySQLで全データベースを表示する権限(SHOW DATABASES)の確認と取り消し方法
MySQLのSHOW DATABASES権限とは MySQLでは、ユーザーがSHOW DATABASESコマンドですべてのデータベースを一覧表示できるかどうかは、グローバル権限「SHOW DATABASES」の有無によって制御されています。この権限を持たないユーザーは、自身がアクセス権限を持つデータベースしか表示できません。 特定のユーザーからこの権限を取り消すには、REVOKE文を使用します。基本の構文は以下のとおりです。 REVOKE SHOW DATABASES ON *.* FROM yourUserName@yourHostName; ユーザー名とホスト名の一覧を確認する まず、対象
-
MySQLのGROUP_CONCATで複数行の値を1つのフィールドにまとめてリストとして取得する方法
はじめにMySQLでは、複数の行に分かれている値を1つのフィールドに連結したリストとして取得したい場面がよくあります。たとえば、科目ごとに受講している学生名をカンマ区切りでまとめて表示したい場合などです。このような場合は、集約関数のGROUP_CONCAT()を使用することで簡単に実現できます。本記事では、実際にテーブルを作成し、サンプルデータを使いながらGROUP_CONCAT()の使い方を順を追って解説します。サンプルテーブルの作成まず、科目名(SubjectName)と学生名(StudentName)を持つテーブルを作成します。mysql> create table DemoTab