sql server - sentencia - ¿Cómo obtengo una lista de todas las tablas en una base de datos utilizando TSQL?
obtener nombres de columnas desde una sentencia sql (17)
¿Cuál es la mejor manera de obtener los nombres de todas las tablas en una base de datos específica en SQL Server?
En SSMS, para obtener todos los nombres de tablas completamente calificados en una base de datos específica (por ejemplo, "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]
Resultados:
- MyDatabase.dbo.MyTable1
- MyDatabase.dbo.MyTable2
- MyDatabase.MySchema.MyTable3
- MyDatabase.MySchema.MyTable4
- etc.
Gracias a Ray Vega, cuya respuesta da a todas las tablas de usuarios en una base de datos ...
exec sp_msforeachtable ''print'' ''?'' ''''
sp_helptext muestra la consulta subyacente, que se resume en ...
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
La desventaja de INFORMATION_SCHEMA.TABLES
es que también incluye tablas del sistema como dtproperties
y las tablas MSpeer_...
, sin ninguna forma de diferenciarlas de sus propias tablas.
Recomendaría usar sys.objects
(la nueva versión de la vista de sysobjects obsoleta), que admite la exclusión de las tablas del sistema:
select *
from sys.objects
where type = ''U'' -- User tables
and is_ms_shipped = 0 -- Exclude system tables
Por favor utiliza esto. Obtendrá nombres de tablas junto con nombres de esquemas:
SELECT SYSSCHEMA.NAME, SYSTABLE.NAME
FROM SYS.tables SYSTABLE
INNER JOIN SYS.SCHEMAS SYSSCHEMA
ON SYSTABLE.SCHEMA_ID = SYSSCHEMA.SCHEMA_ID
SQL Server 2005, 2008, 2012, 2014 o 2016:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE=''BASE TABLE''
Para mostrar solo tablas de una base de datos 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'' )
PS: Para SQL Server 2000:
SELECT * FROM sysobjects WHERE xtype=''U''
simplemente puede seleccionar su base de datos primero
use database_name;
entonces solo escribe
show tables;
select * from sysobjects where xtype=''U''
--for oracle
select tablespace_name, table_name from all_tables;
Este enlace puede proporcionar mucha más información sobre este topic
SELECT * FROM INFORMATION_SCHEMA.TABLES
o
SELECT * FROM Sys.Tables
SELECT * FROM information_schema.tables
where TABLE_TYPE = ''BASE TABLE''
SQL Server 2012
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE=''BASE TABLE''
ORDER BY TABLE_NAME
SELECT name
FROM sysobjects
WHERE xtype=''U''
ORDER BY name;
(Estándar de SQL Server 2000; todavía compatible con SQL Server 2005).
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = ''U''
Aquí hay una lista de otros tipos de objetos que puede buscar también:
- AF: función de agregado (CLR)
- C: restricción CHECK
- D: Restricción por defecto o por defecto
- F: restricción FOREIGN KEY
- L: Log
- FN: función escalar
- FS: ensamblaje (CLR) función escalar
- FT: Asamblea (CLR) función de valores de tabla
- SI: función de mesa alineada
- IT: tabla interna
- P: Procedimiento almacenado
- PC: Ensamblado (CLR) procedimiento almacenado
- PK: restricción PRIMARIA KEY (el tipo es K)
- RF: Filtro de replicación almacenado.
- S: tabla del sistema
- SN: Sinónimo
- SQ: cola de servicio
- TA: Disparador DML de ensamblaje (CLR)
- TF: función de tabla
- TR: Trigger DML SQL
- TT: tipo de tabla
- U: tabla de usuario
- UQ: restricción UNIQUE (el tipo es K)
- V: Ver
- X: procedimiento almacenado extendido
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = ''U''
USE YourDBName
GO
SELECT *
FROM sys.Tables
GO
exec sp_msforeachtable ''print ''''?''''''
select * from sys.tables;
O
SELECT * FROM INFORMATION_SCHEMA.TABLES
O
SELECT * FROM sysobjects WHERE xtype=''U''