SQL选择数据库中的表列表

时间:2011-11-28 08:41:43

标签: sql sql-server

我正在使用SQL Server 2005.我正在尝试在我的一个数据库中选择一个表列表。这是我的SQL Server结构:

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

我想检索dbo.UserDBdbo.detailsDBdbo.goodsDB

的值

但我不知道所需的确切sql查询是什么。

我尝试了许多方法,比如

SELECT * FROM userlogin.Tables;

SELECT * FROM userlogin.Company.Tables;,但它们都不起作用。

我看过很多帖子建议使用show databasesshow tables,但它们看起来效果不佳。

是否可以首先在数据库中选择表名列表?

感谢您提前提供任何帮助。


感谢@TomTom提供的MSDNA链接,我现在可以在我的数据库中列出我的表。

但是,我想列出TABLE_NAME包含“user”的特定表格。

我该怎么办?我正在尝试以下sql,但它目前没有显示结果:

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

5 个答案:

答案 0 :(得分:7)

尝试iNFORMATION_SCHEMA。

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

它们包含您需要的所有架构信息。

答案 1 :(得分:5)

在SQL Server 2005及更高版本中使用新的sys系统目录:

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

您可以阅读有关系统目录视图以及如何在MSDN Books Online中查询它们的更多信息 - 并发出警告 - 还有批次更多内容可供阅读和学习!

答案 2 :(得分:4)

你可以使用@TomTom告诉的INFORMATION_SCHEMA:

USE <<YOUR_DB_NAME>>

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

您可以根据自己的要求自定义上述查询。

要查找名称中包含“user”的表的其他问题,请执行以下语句:

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

答案 3 :(得分:3)

你可以用这个

Use ***database name***

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

对不起,已经看到@marc_s在我面前提供了答案!

答案 4 :(得分:2)

尝试:

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