MySQLのSELECTステートメントでテーブル名を一覧取得する方法
MySQLでSELECTステートメントを使ってデータベース内のテーブル名を取得するには、information_schema.tables を利用します。information_schemaは、MySQLサーバーが管理するメタデータ(テーブル名、カラム情報など)を格納している特殊なデータベースです。
テーブル名を取得する基本構文
以下の構文を使うことで、指定したデータベースに含まれるすべてのテーブル名をSELECT文で一覧表示できます。
SELECT Table_name as TablesName from information_schema.tables where table_schema = 'yourDatabaseName';
yourDatabaseName の部分には、対象となるデータベース名を指定してください。table_schema 列にはデータベース名が格納されているため、WHERE句で絞り込むことで特定のデータベース内のテーブルだけを抽出できます。
実行例:testデータベースの場合
ここでは「test」というデータベースに対して、上記の構文を実際に適用してみます。まずUSE文でデータベースを選択し、その後にSELECT文を実行します。
mysql> use test; Database changed mysql> SELECT Table_name as TablesName from information_schema.tables where table_schema = 'test';
実行結果
実行すると、testデータベースに存在する3つのテーブル名が次のように出力されます。
+--------------------+ | TablesName | +--------------------+ | destination | | myisamtoinnodbdemo | | originaltable | +--------------------+ 3 rows in set (0.00 sec)
このように、AS句を使って TablesName という別名を付けることで、結果を見やすく表示できます。なお、SHOW TABLES文でも同様の結果が得られますが、information_schema.tablesを使う方法は、WHERE句による柔軟な条件指定や他のテーブルとの結合が可能という利点があります。
-
MySQLでテーブル名に「group」を使うと構文エラーになる理由とバッククォートによる回避方法
MySQLにおいて「group」は予約語(リザーブドキーワード)です。そのため、テーブル名としてそのまま使用すると構文エラーが発生します。このエラーを回避するには、テーブル名「group」をバッククォート(`)で囲む必要があります。テーブルの作成例まず、バッククォートで囲んだテーブル名を使ってテーブルを作成してみましょう。mysql> create table `group` -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Name varchar(20) -> );Query
-
MySQLで別テーブルのIDからユーザー名を取得する方法|JOINの使い方を徹底解説
MySQLでは、別々のテーブルに保存されたデータをIDをキーに関連付けて取得したい場面が多くあります。そのような場合にはJOIN(内部結合)を使うことで、複数のテーブルを結合し、目的のユーザー名を簡単に取り出すことができます。 本記事では、実際にサンプルテーブルを作成しながら、JOINクエリの書き方をステップごとに解説します。 1つ目のテーブル「demo77」を作成する まず、ユーザーID(userid)とユーザー名(username)を格納するテーブルを作成します。useridは主キーとして設定します。 mysql> create table demo77 -> (