我正在使用SQL Server 2005.我正在尝试在我的一个数据库中选择一个表列表。这是我的SQL Server结构:
- <IP>(SQL Server 9.0 -userlogin)
- Databases
- Company
- Tables
- dbo.UserDB
- dbo.detailsDB
- dbo.goodsDB
我想检索dbo.UserDB
,dbo.detailsDB
,dbo.goodsDB
但我不知道所需的确切sql查询是什么。
我尝试了许多方法,比如
SELECT * FROM userlogin.Tables;
和
SELECT * FROM userlogin.Company.Tables;
,但它们都不起作用。
我看过很多帖子建议使用show databases
和show tables
,但它们看起来效果不佳。
是否可以首先在数据库中选择表名列表?
感谢您提前提供任何帮助。
感谢@TomTom提供的MSDNA链接,我现在可以在我的数据库中列出我的表。
但是,我想列出TABLE_NAME包含“user”的特定表格。
我该怎么办?我正在尝试以下sql,但它目前没有显示结果:
SELECT DISTINCT TABLE_NAME
FROM Company.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE '%"user"%';
GO
答案 0 :(得分:7)
答案 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