Me gustaría consultar el nombre de todas las columnas de una tabla. Encontré cómo hacer esto en:
Pero necesito saber: ¿cómo se puede hacer esto en Microsoft SQL Server (2008 en mi caso)?
fuente
Me gustaría consultar el nombre de todas las columnas de una tabla. Encontré cómo hacer esto en:
Pero necesito saber: ¿cómo se puede hacer esto en Microsoft SQL Server (2008 en mi caso)?
Puede obtener esta información y mucho, mucho más consultando las vistas del esquema de información .
Esta consulta de muestra:
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
Se puede realizar sobre todos estos objetos de base de datos:
Nortwind.
...)
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'tableName';
esto funciona para mí
TABLE_SCHEMA = '?' AND TABLE_NAME = '?'
ya que estoy en localhost y tengo varias tablas con el mismo nombre pero en diferentes bases de datos.
Puede usar el procedimiento almacenado sp_columns que devolvería información relativa a todas las columnas para una tabla dada. Puede encontrar más información aquí http://msdn.microsoft.com/en-us/library/ms176077.aspx
También puede hacerlo mediante una consulta SQL. Algo como esto debería ayudar:
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName')
O una variación sería:
SELECT o.Name, c.Name
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.type = 'U'
ORDER BY o.Name, c.Name
Esto obtiene todas las columnas de todas las tablas, ordenadas por nombre de tabla y luego por nombre de columna.
select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'
Esto es mejor que obtener sys.columns
porque se muestra DATA_TYPE
directamente.
AND TABLE_SCHEMA = 'schemaName'
la WHERE
cláusula.
JOIN sys.types t on c.system_type_id = t.system_type_id
y agregar t.name
su declaración 'SELECCIONAR' para obtener los tipos junto al nombre de cada columna también.
Puede usar sp_help
en SQL Server 2008.
sp_help <table_name>;
Método abreviado de teclado para el comando anterior: seleccione el nombre de la tabla (es decir, resáltelo) y presione ALT+ F1.
Al usar esta consulta, obtienes la respuesta:
select Column_name
from Information_schema.columns
where Table_name like 'table name'
Puede escribir esta consulta para obtener el nombre de columna y todos los detalles sin usar INFORMATION_SCHEMA en MySql:
SHOW COLUMNS FROM database_Name.table_name;
--This is another variation used to document a large database for conversion (Edited to --remove static columns)
SELECT o.Name as Table_Name
, c.Name as Field_Name
, t.Name as Data_Type
, t.length as Length_Size
, t.prec as Precision_
FROM syscolumns c
INNER JOIN sysobjects o ON o.id = c.id
LEFT JOIN systypes t on t.xtype = c.xtype
WHERE o.type = 'U'
ORDER BY o.Name, c.Name
--In the left join, c.type is replaced by c.xtype to get varchar types
SELECT name
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE_NAME')
TABLE_NAME
es tu mesa
SELECT column_name, data_type, character_maximum_length, table_name,ordinal_position, is_nullable
FROM information_schema.COLUMNS WHERE table_name LIKE 'YOUR_TABLE_NAME'
ORDER BY ordinal_position
Solo ejecuta este comando
EXEC sp_columns 'Your Table Name'
A esta pregunta SO le falta el siguiente enfoque:
-- List down all columns of table 'Logging'
select * from sys.all_columns where object_id = OBJECT_ID('Logging')
Verificará si la tabla basetable
es la dada .
SELECT
T.TABLE_NAME AS 'TABLE NAME',
C.COLUMN_NAME AS 'COLUMN NAME'
FROM INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME
WHERE T.TABLE_TYPE='BASE TABLE'
AND T.TABLE_NAME LIKE 'Your Table Name'
Puede intentar esto. Esto proporciona todos los nombres de columna con sus respectivos tipos de datos.
desc <TABLE NAME> ;
puedes usar esta consulta
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
SELECT c.Name
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.object_id = OBJECT_ID('TABLE_NAME')
ORDER BY c.Name
Otra opción que podría decirse que es más intuitiva es:
SELECT [name]
FROM sys.columns
WHERE object_id = OBJECT_ID('[yourSchemaType].[yourTableName]')
Esto le da todos los nombres de sus columnas en una sola columna. Si le interesan otros metadatos, puede cambiar la edición de SELECT STATEMENT TO SELECT *
.
Resumiendo las respuestas
Puedo ver muchas respuestas diferentes y formas de hacer esto, pero hay un problema en esto y ese es el objective
.
Sí, el objetivo. Si desea only know
los nombres de columna, puede usar
SELECT * FROM my_table WHERE 1=0
or
SELECT TOP 0 * FROM my_table
Pero si desea use
esas columnas en algún lugar o simplemente decirlas manipulate
, las consultas rápidas anteriores no serán de ninguna utilidad. Necesitas usar
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers'
Una forma más de conocer algunas columnas específicas donde necesitamos algunas columnas similares
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like N'%[ColumnName]%' and TABLE_NAME = N'[TableName]'
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'name_of_your_table'
SELECT TOP (0) [toID]
,[sourceID]
,[name]
,[address]
FROM [ReportDatabase].[Ticket].[To]
Simple y no requiere ninguna tabla sys
SELECT * FROM my_table WHERE 1=0
SELECT TOP 0 * FROM my_table
es menos pulsaciones de teclas