获取SQL Server上特定数据库中所有表的名称的最佳方法是什么?
答案 0 :(得分:1299)
SQL Server 2005,2008,2012,2014或2016:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
仅显示特定数据库中的表
SELECT TABLE_NAME
FROM <DATABASE_NAME>.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'
答案 1 :(得分:189)
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
以下是您可以搜索的其他对象类型的列表:
答案 2 :(得分:79)
SELECT * FROM INFORMATION_SCHEMA.TABLES
或
SELECT * FROM Sys.Tables
答案 3 :(得分:31)
select * from sys.tables;
OR
SELECT * FROM INFORMATION_SCHEMA.TABLES
OR
SELECT * FROM sysobjects WHERE xtype='U'
答案 4 :(得分:23)
USE YourDBName
GO
SELECT *
FROM sys.Tables
GO
OR
USE YourDBName
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES
GO
答案 5 :(得分:10)
SELECT * FROM information_schema.tables
where TABLE_TYPE = 'BASE TABLE'
SQL Server 2012
答案 6 :(得分:9)
exec sp_msforeachtable 'print ''?'''
答案 7 :(得分:8)
SELECT name
FROM sysobjects
WHERE xtype='U'
ORDER BY name;
(SQL Server 2000标准; SQL Server 2005仍然支持。)
答案 8 :(得分:6)
select * from sysobjects where xtype='U'
答案 9 :(得分:5)
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
答案 10 :(得分:4)
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
答案 11 :(得分:2)
在SSMS中,获取特定数据库中的所有完全限定的表名(例如,&#34; MyDatabase&#34;):
$(document).ready(function() {
$("#addNew").click(function() {
var maindiv = document.getElementById('nestedFeilds').innerHTML;
$("#showhere").append(maindiv);
maindiv.attr('name', 'myid');
});
});
结果:
答案 12 :(得分:2)
请使用此。您将获得表名和模式名称:
SELECT SYSSCHEMA.NAME, SYSTABLE.NAME
FROM SYS.tables SYSTABLE
INNER JOIN SYS.SCHEMAS SYSSCHEMA
ON SYSTABLE.SCHEMA_ID = SYSSCHEMA.SCHEMA_ID
答案 13 :(得分:1)
您可以先选择数据库
use database_name;
然后输入
show tables;
答案 14 :(得分:1)
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
ORDER BY TABLE_NAME
答案 15 :(得分:1)
感谢Ray Vega,他的回复为数据库中的所有用户表提供了......
exec sp_msforeachtable&#39; print&#39;&#39;&#39;&#39;&#39;
sp_helptext显示基础查询,总结为...
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
答案 16 :(得分:0)
--for oracle
select tablespace_name, table_name from all_tables;
此链接可提供有关此内容的更多信息 topic
答案 17 :(得分:0)
使用SELECT * FROM INFORMATION_SCHEMA.COLUMNS
还可以显示所有表和相关列。
答案 18 :(得分:0)
那么您可以使用 sys.objects 来获取所有数据库对象。
GO
select * from sys.objects where type_desc='USER_TABLE' order by name
GO
OR
-- 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