Как получить список всех таблиц в базе данных, используя TSQL? - PullRequest
821 голосов
/ 06 октября 2008

Каков наилучший способ получить имена всех таблиц в конкретной базе данных на SQL Server?

Ответы [ 19 ]

1302 голосов
/ 06 октября 2008

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' 
189 голосов
/ 06 октября 2008
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'

Вот список других типов объектов, которые вы также можете искать:

  • AF: Агрегатная функция (CLR)
  • C: ограничение CHECK
  • D: ограничение по умолчанию или ограничение DEFAULT
  • F: ограничение FOREIGN KEY
  • L: Log
  • FN: скалярная функция
  • FS: сборочная (CLR) скалярная функция
  • FT: табличная функция сборки (CLR)
  • IF: встроенная табличная функция
  • IT: Внутренний стол
  • P: хранимая процедура
  • ПК: хранимая процедура сборки (CLR)
  • PK: ограничение PRIMARY KEY (тип K)
  • RF: хранимая процедура фильтра репликации
  • S: Системная таблица
  • SN: Синоним
  • SQ: очередь обслуживания
  • TA: сборка (CLR) DML-триггер
  • TF: табличная функция
  • TR: триггер SQL DML
  • TT: тип таблицы
  • U: таблица пользователей
  • UQ: УНИКАЛЬНОЕ ограничение (тип K)
  • V: просмотр
  • X: расширенная хранимая процедура
79 голосов
/ 06 октября 2008
SELECT * FROM INFORMATION_SCHEMA.TABLES 

или

SELECT * FROM Sys.Tables
31 голосов
/ 03 мая 2012
select * from sys.tables;

ИЛИ

SELECT * FROM INFORMATION_SCHEMA.TABLES 

OR

SELECT * FROM sysobjects WHERE xtype='U'
23 голосов
/ 03 октября 2013
USE YourDBName
GO 
SELECT *
FROM sys.Tables
GO

OR

USE YourDBName
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES 
GO
10 голосов
/ 13 августа 2013
SELECT * FROM information_schema.tables
where TABLE_TYPE = 'BASE TABLE'

SQL Server 2012

9 голосов
/ 06 октября 2008
exec sp_msforeachtable 'print ''?'''
8 голосов
/ 06 октября 2008
SELECT name 
FROM sysobjects 
WHERE xtype='U' 
ORDER BY name;

(стандарт SQL Server 2000; все еще поддерживается в SQL Server 2005.)

6 голосов
/ 06 октября 2008

select * from sysobjects where xtype='U'

5 голосов
/ 06 октября 2008
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U' 
...