Подтвердить что ты не робот

Запрос на получение имен всех таблиц в базе данных SQL Server 2008

Можно ли написать запрос, который даст мне имена всех таблиц в базе данных SQL Server? Я работаю над документацией "после факта" в системе, которую я не создавал, и я ищу ярлык, чтобы получить список таблиц в базе данных.

4b9b3361

Ответ 1

В одной базе данных - да:

USE your_database
SELECT name FROM sys.tables

Получение всех таблиц во всех базах данных - только с помощью взлома.... см. этот вопрос SO для нескольких подходов, как это сделать: Как мне перечислить все таблицы во всех базах данных в SQL Server в одном наборе результатов?

Ответ 2

другой способ, также будет работать с MySQL и PostgreSQL

select TABLE_NAME from INFORMATION_SCHEMA.TABLES
where TABLE_TYPE = 'BASE TABLE'

Ответ 3

Попробуйте следующее:

SELECT s.NAME + '.' + t.NAME AS TableName
FROM sys.tables t
INNER JOIN sys.schemas s
    ON t.schema_id = s.schema_id

он отобразит имя схемы/таблицы для всех таблиц в текущей базе данных.

Вот версия, которая будет перечислять каждую таблицу в каждой базе данных на текущем сервере. он позволяет использовать параметр поиска для любой части или частей сервера + базы данных + схемы + имена таблиц:

SET NOCOUNT ON
DECLARE @AllTables table (CompleteTableName nvarchar(4000))
DECLARE @Search nvarchar(4000)
       ,@SQL   nvarchar(4000)
SET @Search=null --all rows
SET @SQL='select @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name from [?].sys.tables t inner join sys.schemas s on t.schema_id=s.schema_id WHERE @@SERVERNAME+''.''+''?''+''.''+s.name+''.''+t.name LIKE ''%'+ISNULL(@SEARCH,'')+'%'''

INSERT INTO @AllTables (CompleteTableName)
    EXEC sp_msforeachdb @SQL
SET NOCOUNT OFF
SELECT * FROM @AllTables ORDER BY 1

установите для @Search значение NULL для всех таблиц, установите его для таких вещей, как "dbo.users" или "users" или ".master.dbo" или даже включите подстановочные знаки, такие как ".master.%. u" и т.д.

Ответ 4

Чтобы получить информацию о полях, вы можете использовать следующее:

SELECT TABLE_SCHEMA, TABLE_NAME, 
       COLUMN_NAME, substring(DATA_TYPE, 1,1) AS DATA_TYPE
FROM information_schema.COLUMNS 
WHERE TABLE_SCHEMA NOT IN("information_schema", "mysql", "performance_schema") 
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION

Ответ 5

sys.tables

Содержит все таблицы. поэтому выполните этот запрос, чтобы получить все таблицы с подробностями.

SELECT * FROM sys.tables

введите описание изображения здесь

или просто выберите Имя из sys.tables, чтобы получить имя всех таблиц.

SELECT Name From sys.tables

Ответ 6

Пожалуйста, используйте следующий запрос, чтобы перечислить таблицы в вашей БД.

select name from sys.Tables 

Кроме того, вы можете добавить условие where, чтобы пропустить сгенерированные системой таблицы и отображать только созданную пользователем таблицу, добавив type ='U'

Пример: select name from sys.Tables where type ='U'