How do I get list of all tables in a database using TSQL?
获取SQL Server上特定数据库中所有表的名称的最佳方法是什么?
SQL Server 2005年、2008年、2012年和2016年,2014年。
1 | SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' |
特别是对数据库表中显示。
1 2 3 | SELECT TABLE_NAME FROM <DATABASE_NAME>.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' |
或者,
1 2 3 4 | 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。
1 | SELECT * FROM sysobjects WHERE xtype='U' |
1 2 3 | SELECT sobjects.name FROM sysobjects sobjects WHERE sobjects.xtype = 'U' |
这里是一个列表中的其他对象类型的搜索是好的:你可以
- 房颤:聚集函数(CLR)
- C:检查约束
- D:默认或默认值约束
- F:外键约束
- L:日志
- 标量函数):
- 财政司司长:组件(CLR)的标量函数
- 金融时报:组件(CLR)表值函数
- 如果在衬里表函数
- 它的内部表
- P:存储过程
- PC汇编(CLR)中存储的程序
- PK:主键约束(是K型)
- 射频滤波器:复制存储过程。
- S:系统表
- 锡:synonym
- 平方:服务队列
- 塔:DML触发器组件(CLR)
- TF:表函数
- TR:SQL DML触发器
- TT型:表
- U:用户表
- 昆士兰大学:独特的约束(是K型)
- 视图(V):
- 扩展存储过程
1 | SELECT * FROM INFORMATION_SCHEMA.TABLES |
或
1 | SELECT * FROM Sys.Tables |
1 | select * from sys.tables; |
或
1 | SELECT * FROM INFORMATION_SCHEMA.TABLES |
或
1 | SELECT * FROM sysobjects WHERE xtype='U' |
1 2 3 4 5 | USE YourDBName GO SELECT * FROM sys.Tables GO |
或
1 2 3 4 | USE YourDBName GO SELECT * FROM INFORMATION_SCHEMA.TABLES GO |
1 2 | SELECT * FROM information_schema.tables where TABLE_TYPE = 'BASE TABLE' |
SQL Server 2012
1 | exec sp_msforeachtable 'print ''?''' |
1 2 3 4 | SELECT name FROM sysobjects WHERE xtype='U' ORDER BY name; |
SQL Server 2000标准;还支持在SQL Server 2005)。
1 2 3 | SELECT sobjects.name FROM sysobjects sobjects WHERE sobjects.xtype = 'U' |
它的缺点是:
我会建议使用
1 2 3 4 | select * from sys.objects where type = 'U' -- User tables and is_ms_shipped = 0 -- Exclude system tables |
在全国,让所有的完全合格域名数据库中的特定表的(例如,"名称"):
1 2 3 4 | SELECT [TABLE_CATALOG] + '.' + [TABLE_SCHEMA] + '.' + [TABLE_NAME] FROM MyDatabase.INFORMATION_SCHEMA.Tables WHERE [TABLE_TYPE] = 'BASE TABLE' and [TABLE_NAME] <> 'sysdiagrams' ORDER BY [TABLE_SCHEMA], [TABLE_NAME] |
结果:
- mydatabase.dbo.mytable1
- mydatabase.dbo.mytable2
- mydatabase.myschema.mytable3
- mydatabase.myschema.mytable4
- 等。
请使用这个。你将得到:随着表名称模式名称
1 2 3 4 | SELECT SYSSCHEMA.NAME, SYSTABLE.NAME FROM SYS.tables SYSTABLE INNER JOIN SYS.SCHEMAS SYSSCHEMA ON SYSTABLE.SCHEMA_ID = SYSSCHEMA.SCHEMA_ID |
1 2 3 4 | SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' ORDER BY TABLE_NAME |
感谢射线维加,其响应了用户数据库中所有表…………………
exec sp_msforeachtable 'print ''?'''
节目查询_ helptext SP的底层,它总结了…
1 2 3 4 | select * from dbo.sysobjects o join sys.all_objects syso on o.id = syso.object_id where OBJECTPROPERTY(o.id, 'IsUserTable') = 1 and o.category & 2 = 0 |
你可以简单地选择你的数据库的第一
1 | use database_name; |
那只是型
1 | show tables; |
1 2 | --for oracle select tablespace_name, table_name from all_tables; |
这个链接可以提供多的信息。主题
你可以使用,以获得良好的sys.objects所有数据库对象。
1 2 3 | GO select * from sys.objects where type_desc='USER_TABLE' order by name GO |
或
1 2 3 4 5 6 7 8 9 10 11 | -- For all tables select * from INFORMATION_SCHEMA.TABLES GO --- For user defined tables select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='BASE TABLE' GO --- For Views select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='VIEW' GO |
你也用