私は「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
。