当前位置:  开发笔记 > 编程语言 > 正文

如何使用TSQL获取数据库中所有表的列表?

如何解决《如何使用TSQL获取数据库中所有表的列表?》经验,为你挑选了11个好方法。

获取SQL Server上特定数据库中所有表的名称的最佳方法是什么?



1> ScottStoneho..:

SQL Server 2005,2008,2012,2014或2016:

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

仅显示特定数据库中的表

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

要么,

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_TYPE = 'BASE TABLE' 
    AND TABLE_CATALOG='dbName' --(for MySql, use: TABLE_SCHEMA='dbName' )

PS:对于SQL Server 2000:

SELECT * FROM sysobjects WHERE xtype='U' 


请注意,这还包括VIEWS,而不仅仅是表格
添加`WHERE TABLE_TYPE ='BASE TABLE'将只包含基表(并且通过扩展,你总是可以使用`WHERE TABLE_TYPE!='VIEW'`).
如果您没有使用特定数据库,请添加数据库名称,因此它将是SELECT TABLE_NAME FROM .INFORMATION_SCHEMA.Tables
sysdiagrams是一个普通的表,你总是需要用`AND name <>'sysdiagrams'来手动排除它.
“ sysdiagrams”也出现在此列表中:(

2> Micah..:
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'

以下是您可以搜索的其他对象类型的列表:

AF:聚合函数(CLR)

C:CHECK约束

D:默认或DEFAULT约束

F:FOREIGN KEY约束

L:记录

FN:标量函数

FS:汇编(CLR)标量函数

FT:汇编(CLR)表值函数

IF:内联表功能

IT:内部表格

P:存储过程

PC:汇编(CLR)存储过程

PK:PRIMARY KEY约束(类型为K)

RF:复制过滤器存储过程

S:系统表

SN:同义词

SQ:服务队列

TA:汇编(CLR)DML触发器

TF:表函数

TR:SQL DML触发器

TT:表类型

U:用户表

UQ:UNIQUE约束(类型为K)

V:查看

X:扩展存储过程


别名有点多余:`SELECT name FROM sysobjects WHERE xtype ='U'`会做同样的事情.
所有xtype的msdn - http://msdn.microsoft.com/en-us/library/ms177596.aspx

3> StingyJack..:
SELECT * FROM INFORMATION_SCHEMA.TABLES 

要么

SELECT * FROM Sys.Tables


只需注意(如其他答案中所述)sys.tables仅在2005年开始提供
在2018年这不是问题。我认为这应该更高:-)

4> 小智..:
select * from sys.tables;

要么

SELECT * FROM INFORMATION_SCHEMA.TABLES 

要么

SELECT * FROM sysobjects WHERE xtype='U'



5> Vikash Singh..:
USE YourDBName
GO 
SELECT *
FROM sys.Tables
GO

要么

USE YourDBName
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES 
GO



6> Rasoul Zabih..:
SELECT * FROM information_schema.tables
where TABLE_TYPE = 'BASE TABLE'

SQL Server 2012



7> Ray Vega..:
exec sp_msforeachtable 'print ''?'''



8> devio..:
SELECT name 
FROM sysobjects 
WHERE xtype='U' 
ORDER BY name;

(SQL Server 2000标准; SQL Server 2005仍然支持.)



9> spoulson..:

select * from sysobjects where xtype='U'



10> Erikk Ross..:
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U' 



11> Astrotrain..:

缺点INFORMATION_SCHEMA.TABLES是它还包括系统表(例如dtproperties和)MSpeer_...,无法与您自己的表区分开。

我建议使用sys.objects(已弃用的sysobjects视图的新版本 ),它确实支持排除系统表:

select *
from sys.objects
where type = 'U'      -- User tables
and is_ms_shipped = 0 -- Exclude system tables

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有