SQLクエリで特定のデータベースのすべてのテーブル名を取得しますか?質問する

SQLクエリで特定のデータベースのすべてのテーブル名を取得しますか?質問する

私は「MySQL」や「MS SQL Server」などの複数のデータベースサーバーを処理できるアプリケーションに取り組んでいます。

すべてのデータベース タイプに適した一般的なクエリを使用して、特定のデータベースのテーブル名を取得したいと考えています。次のことを試しました。

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

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

ベストアンサー1

おそらく、さまざまな SQL DBMS がスキーマを処理する方法が異なるためです。

以下を試してください

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

おすすめ記事