ver una tablas tabla sentencia obtener nombres nombre los listar las estructura desde descripcion datos como columnas sql-server tsql database-table

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''