¿Cómo obtengo una lista de todas las tablas en una base de datos usando TSQL?
¿Cuál es la mejor manera de obtener los nombres de todas las tablas en una base de datos específica en SQL Server?
Aceptado
Servidor SQL 2000, 2005, 2008, 2012, 2014, 2016, 2017 o 2019:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Para mostrar solo tablas de una base de datos en particular
SELECT TABLE_NAME
FROM [<DATABASE_NAME>].INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
O,
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND TABLE_CATALOG='dbName' --(for MySql, use: TABLE_SCHEMA='dbName' )
PD: Para SQL Server 2000:
SELECT * FROM sysobjects WHERE xtype='U'
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
Aquí hay una lista de otros tipos de objetos que también puede buscar:
- AF: función agregada (CLR)
- C: VERIFICAR restricción
- D: Restricción predeterminada o DEFAULT
- F: restricción de CLAVE EXTRANJERA
- L: registro
- FN: función escalar
- FS: función escalar de ensamblaje (CLR)
- FT: función con valores de tabla de ensamblaje (CLR)
- IF: función de tabla en línea
- TI: Mesa interna
- P: procedimiento almacenado
- PC: procedimiento almacenado de ensamblaje (CLR)
- PK: restricción de CLAVE PRIMARIA (el tipo es K)
- RF: procedimiento almacenado del filtro de replicación
- S: tabla del sistema
- SN: Sinónimo
- SQ: cola de servicio
- TA: Activador DML de ensamblaje (CLR)
- TF: función de tabla
- TR: Activador SQL DML
- TT: tipo de tabla
- U: tabla de usuarios
- UQ: restricción ÚNICA (el tipo es K)
- V: Ver
- X: procedimiento almacenado extendido
SELECT * FROM INFORMATION_SCHEMA.TABLES
O
SELECT * FROM Sys.Tables