1. ホーム
  2. sql

[解決済み] SQLクエリで特定のデータベースのすべてのテーブル名を取得しますか?

2022-03-25 12:16:06

質問

MySQLやMS SQL Serverなど、複数のデータベースサーバーを扱うアプリケーションに取り組んでいます。

私は、すべてのデータベースタイプに適した一般的なクエリを使用して、特定のデータベースのテーブル名を取得したいです。私は以下を試してみました。

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'

しかし、それは特定のサーバーのすべてのデータベースのテーブル名を与えていますが、私は選択したデータベースのテーブル名のみを取得したいです。どうすれば、このクエリを制限して、特定のデータベースのテーブルを取得できますか?

解決方法は?

おそらく、異なるSQL Dbmのスキーマの扱い方によるものでしょう。

以下を試してみてください。

SQL Server の場合。

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='dbName'

MySQLの場合。

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='dbName' 

Oracle の場合は、同等のものとして DBA_TABLES .