2011-11-28 166 views
5

我正在使用SQL Server 2005.我試圖在我的數據庫之一中選擇一個表的列表。這裏是我的我的SQL Server的結構:SQL選擇數據庫中的表的列表

- <IP>(SQL Server 9.0 -userlogin) 
    - Databases 
     - Company 
      - Tables 
      - dbo.UserDB 
      - dbo.detailsDB 
      - dbo.goodsDB 

我想檢索dbo.UserDBdbo.detailsDB值,dbo.goodsDB

但我不知道什麼是所需的確切SQL查詢。

我已經嘗試過很多辦法像

SELECT * FROM userlogin.Tables;

SELECT * FROM userlogin.Company.Tables;,但他們沒有工作。

我看過不少帖子,暗示使用show databasesshow tables,但他們似乎並沒有工作。

首先可以選擇數據庫中的表名列表嗎?

感謝您提前給予任何幫助。


感謝@TomTom提供的MSDNA鏈接,現在我可以在我的數據庫中列出我的表。

但是,我想要列出TABLE_NAME包含「用戶」的特定表。

我該怎麼辦?我試圖在下面的SQL,但它現在不顯示結果:

SELECT DISTINCT TABLE_NAME 
FROM Company.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME LIKE '%"user"%'; 
GO 

回答

5

嘗試iNFORMATION_SCHEMA。

http://msdn.microsoft.com/en-us/library/ms186778.aspx

它們包含所有你需要的架構信息。

+0

感謝您的有用鏈接。我現在可以列出我所有的數據庫。但是,如果我想列出名稱中包含例如「用戶」?我正在嘗試以下SQL:SELECT DISTINCT TABLE_NAME FROM Company.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE'%「user」%'; GO – gymcode

+1

@RUiHAO - 你想列出一個數據庫或表?刪除「周圍的用戶,所以'%」用戶「%」'變成''%user%''。 –

+0

@Lieven對不起我的錯誤,我想要一個表的列表。你的方法工作。非常感謝! – gymcode

2

嘗試:

SELECT * 
from sysobjects 
where type = 'U' AND 
NAME LIKE '%user%' 
GO 
+0

nope它不工作,它給了我有趣的表格 – gymcode

+1

棄用 - 從SQL Server 2005開始,你應該使用'sys.tables' –

4

您可以使用INFORMATION_SCHEMA方說@TomTom:

USE <<YOUR_DB_NAME>> 

SELECT TABLE_SCHEMA + '.' + TABLE_NAME, * 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' 
ORDER BY TABLE_SCHEMA + '.' + TABLE_NAME 

您可以自定義上面的查詢按您的要求。

對於你的另一個問題尋找到的名稱中包含「用戶」,執行以下語句表:

USE <<YOUR_DB_NAME>> 
Exec sp_tables '%user%' 
5

使用新sys系統目錄在SQL Server 2005及以上:

SELECT Name 
FROM sys.tables 
WHERE is_ms_shipped = 0 -- only list *your* tables - not the system/MS table 

您可以閱讀更多關於系統目錄視圖以及如何在MSDN Books Online中查詢它們的信息 - 並且需要注意 - 很多需要閱讀和學習!

3

您可以使用此

Use ***database name*** 

SELECT * 
FROM sys.tables 
WHERE name like '%user%' 

對不起,已經看到@marc_s已經在我之前給出了答案!