Каков наилучший способ получить имена всех таблиц в конкретной базе данных на SQL Server?
Как получить список всех таблиц в базе данных с помощью TSQL?
Ответ 1
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'
Ответ 2
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: Сохраненная процедура
- Сохранение хранимой процедуры ПК: сборка (CLR)
- PK: ограничение PRIMARY KEY (тип K)
- RF: хранимая процедура фильтра репликации
- S: системная таблица
- SN: синоним
- SQ: очередь обслуживания
- TA: Сборка (CLR) DML-триггер
- TF: функция таблицы
- TR: SQL DML Trigger
- TT: Тип таблицы
- U: Таблица пользователей
- UQ: ограничение UNIQUE (тип K)
- V: Просмотреть
- X: расширенная хранимая процедура
Ответ 3
SELECT * FROM INFORMATION_SCHEMA.TABLES
или
SELECT * FROM Sys.Tables
Ответ 4
select * from sys.tables;
ИЛИ
SELECT * FROM INFORMATION_SCHEMA.TABLES
ИЛИ
SELECT * FROM sysobjects WHERE xtype='U'
Ответ 5
USE YourDBName
GO
SELECT *
FROM sys.Tables
GO
ИЛИ ЖЕ
USE YourDBName
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES
GO
Ответ 6
exec sp_msforeachtable 'print ''?'''
Ответ 7
SELECT * FROM information_schema.tables
where TABLE_TYPE = 'BASE TABLE'
SQL Server 2012
Ответ 8
SELECT name
FROM sysobjects
WHERE xtype='U'
ORDER BY name;
(стандарт SQL Server 2000, по-прежнему поддерживается в SQL Server 2005.)
Ответ 9
select * from sysobjects where xtype='U'
Ответ 10
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
Ответ 11
Недостатком 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
Ответ 12
В SSMS для получения всех полных имен таблиц в конкретной базе данных (например, "MyDatabase" ):
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
- и др.
Ответ 13
Пожалуйста, используйте это. Вы получите имена таблиц вместе с именами схем:
SELECT SYSSCHEMA.NAME, SYSTABLE.NAME
FROM SYS.tables SYSTABLE
INNER JOIN SYS.SCHEMAS SYSSCHEMA
ON SYSTABLE.SCHEMA_ID = SYSSCHEMA.SCHEMA_ID
Ответ 14
вы можете просто сначала выбрать свою базу данных
use database_name;
то просто введите
show tables;
Ответ 15
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
ORDER BY TABLE_NAME
Ответ 16
Благодаря Ray Vega, чей ответ дает все пользовательские таблицы в базе данных...
exec sp_msforeachtable 'print' '?' ''
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
Ответ 17
--for oracle
select tablespace_name, table_name from all_tables;
Эта ссылка может предоставить гораздо больше информации об этом тема
Ответ 18
Использование SELECT * FROM INFORMATION_SCHEMA.COLUMNS
также показывает все таблицы и связанные столбцы.