MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでデータベースの一覧を確認するには?使えるクエリと実行例を解説

MySQLサーバー上にどんなデータベースが存在するのかを確認したい場面はよくあります。もっとも手軽なのは SHOW DATABASES ステートメントですが、information_schema に対してSELECTクエリを実行することでも同じ情報を取得できます。ここでは、その具体的な方法を紹介します。

information_schemaを使ってデータベース一覧を取得する

次のMySQLクエリを実行すると、サーバー上に存在するすべてのデータベース(スキーマ)名の一覧を表示できます。

mysql> SELECT schema_name FROM information_schema.schemata;
+--------------------+
| schema_name        |
+--------------------+
| information_schema |
| gaurav             |
| mysql              |
| performance_schema |
| query              |
| query1             |
| sys                |
| tutorials          |
+--------------------+
8 rows in set (0.00 sec)

information_schema.schemata テーブルには、MySQLサーバーが管理しているすべてのスキーマ(データベース)のメタ情報が格納されています。そのため、このテーブルから schema_name カラムを選択すれば、データベース名の一覧が得られるという仕組みです。

WHERE句でデータベースを絞り込む

このクエリは、通常のSELECT文と同じように WHERE句 と組み合わせることができます。たとえば、名前が特定のパターンに一致するデータベースだけを抽出したい場合は、以下のように LIKE 演算子を使用します。

mysql> SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE '%schema' OR schema_name LIKE '%s';
+--------------------+
| schema_name        |
+--------------------+
| information_schema |
| performance_schema |
| sys                |
| tutorials          |
+--------------------+
4 rows in set (0.00 sec)

この例では、「schema」で終わる名前、または「s」で終わる名前を持つデータベースのみが結果として返されています。このように条件を組み合わせることで、多数のデータベースが存在する環境でも目的のデータベースを素早く見つけられます。

補足:SHOW DATABASESとの違い

単純に一覧を見たいだけであれば、SHOW DATABASES; コマンドでも同じ結果が得られます。一方、information_schema を使う方法は、WHERE句による柔軟な絞り込みや、他のテーブルとの結合など、より高度な検索が必要な場合に役立ちます。用途に応じて使い分けるとよいでしょう。

  1. MySQLで文字列を「||」演算子で連結する方法|PIPES_AS_CONCATの設定手順を解説

    MySQLで文字列を「||」で連結できるのか?はい、MySQLでもsql_modeを設定することで、||演算子を使った文字列の連結が可能です。標準のMySQLでは||は論理ORとして解釈されますが、sql_modeを「PIPES_AS_CONCAT」に変更すると、OracleやPostgreSQLと同じように文字列連結演算子として機能するようになります。sql_modeの設定方法構文は以下の通りです。set sql_mode=PIPES_AS_CONCAT;||を使った連結の基本構文||演算子で文字列を連結する際の基本構文は次の通りです。SELECT yourValue || yourColu

  2. MySQLの単一クエリでIDが最も高い行を更新する方法

    はい、単一のクエリで実行可能です。まずはサンプル用のテーブルを作成しましょう。mysql> create table DemoTable     (     ID int,     GameScore int     ); Query OK, 0 rows affected (0.55 sec)次に、INSERTコマンドを使用してテーブルにレコードをいくつか挿入します。mysql> insert into DemoTable