2011-01-10 99 views
13

我已經通過一堆網站進行了搜索,我還沒有遇到過任何代碼或教程,它們都經歷了從單個數據庫獲取表名的細節。從數據庫中獲取表名

假設我有4個數據庫,並且我想要名爲mp21的數據庫中的所有表的名稱,我可以使用什麼查詢?

+1

你使用什麼風格的RDBMS - SQL Server,MySQL或其他..? – AdaTheDev 2011-01-10 09:54:47

+0

另外,你使用什麼編程語言/框架? .NET,Java,COBOL ...?或者你想僅使用SQL來完成它? – sleske 2011-01-10 09:59:25

回答

19
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' 
9

在MySQL中,這將列出所有的數據庫:

show databases; 

對於這些,你可以這樣做:

use <database_name>; 

然後

show tables; 
+0

使用mp21 SHOW TABLES也不起作用。另一個代碼我之前試過。 – 2011-01-10 10:03:42

1
use mp21 
SELECT name FROM dbo.sysobjects WHERE xtype = 'U' 
+0

之前嘗試過。我不知道爲什麼,但sys不適用於我的查詢。 – 2011-01-10 10:02:28

+0

你正在使用哪個數據庫系統,sqlserver? – 2011-01-10 10:04:16

3

在SQL Server中,你可以使用 -

select * from sys.tables 
0

如果你是問關於.NET代碼,那麼你需要SMO

using Microsoft.SqlServer.Management.Smo; 
using Microsoft.SqlServer.Management.Common; 



public static List<Table> GetTables(string connection, string databaseName) 
     { 
      if (String.IsNullOrEmpty(connection)) 
       throw new ArgumentException("connection is null or empty.", "connection"); 

      Server srv = getServer(connection); 
      return srv.Databases[databaseName].Tables.Cast<Table>().ToList(); 
     } 
1

我用這個查詢:

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

它爲我提供了表名以及sysDiagram(爲該數據庫生成的數據庫圖)

0

這是您詢問的MySQL查詢。

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='mp21'