2009-10-16 36 views

Respuesta

93

Para Oracle (PL/SQL)

SELECT column_name 
FROM user_tab_cols 
WHERE table_name = 'myTableName' 

Para MySQL

SHOW COLUMNS FROM table_name 
+3

Youd probablemente quieran pedir la consulta de Oracle column_id –

+4

Para Oracle también es válido 'DESCRIBE name_of_table'. – Pigueiras

+0

use ; muestra columnas en como '%'; Te permitirá enumerar solo las columnas que comienzan con el prefijo especificado. Omitir los corchetes angulares, por supuesto. – rstackhouse

181

Para MySQL/Oracle, Uso:

DESCRIBE name_of_table; 
+2

+1. Esto mostrará todas las columnas en la tabla y mostrará detalles sobre cada una de las columnas. – Navigatron

+12

Esta solución es para MYSQL no MSSQL –

+7

Esto también funciona para Oracle – dmvianna

12

MS SQL Server:

sp_columns [nombredetabla]

63

Para MS SQL Server:

select * from information_schema.columns where table_name = 'tableName' 
+5

La columna de interés aquí sería COLUMN_NAME. – Buggieboy

+3

Esto debería funcionar en muchos DBMS. La vista del sistema 'information_schema.columns' es parte del estándar' ANSI SQL' ([link] (http://en.wikipedia.org/wiki/Information_schema)). –

+2

buena respuesta, pero para evitar duplicados, utilizaría: 'seleccione COLUMN_NAME de information_schema.columns donde table_name = 'tableName' y table_schema = 'databaseName'' – billynoah

18

SQL Server

SELECT 
    c.name 
FROM 
    sys.objects o 
INNER JOIN 
    sys.columns c 
ON 
    c.object_id = o.object_id 
AND o.name = '[Table Name]' 

o

SELECT 
    COLUMN_NAME 
FROM 
    INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_NAME = '[Table Name]' 

La segunda manera es un estándar ANSI y por lo tanto debe trabajo sobre todo ANSI Bases de datos compatibles.

+0

Ninguno de estos funciona como está escrito (o al menos implícito, como lo leí) para MS SQL Server. En ambos casos, la columna del nombre de la tabla almacena el nombre _without_ any '[' ']' a su alrededor, por lo que la consulta no debe usarlos, solo el nombre de la tabla simple. Si esa no era la intención del OP, al menos tenga en cuenta esto. – JonBrave

+0

@JonBrave - eso es correcto, los corchetes estaban ahí para sugerir _ "inserte aquí su nombre de tabla" _ :) –

+0

Al ser corchetes, lo leí como "_introduzca el nombre de su tabla entre corchetes (debido a una palabra potencialmente reservada) here_ ", y luego no tiene coincidencias :) Tal vez BNF'

'habría evitado la ambigüedad. De todos modos, me di cuenta de que podría haberlo intentado mientras escribía el comentario --- no hace daño advertir a otros por las dudas. – JonBrave

3

SQL Server

para enumerar todas las tablas definidas por el usuario de una base de datos:

use [databasename] 
select name from sysobjects where type = 'u' 

para enumerar todas las columnas de una tabla:

use [databasename] 
select name from syscolumns where id=object_id('tablename') 
+0

¿Heh? Esto simplemente está mal ... solo puede usar USE para bases de datos ... Y la consulta devuelve todas las tablas definidas por el usuario en la base de datos, que no es lo que el OP quería. –

+0

Ah, lo siento. Lo he corregido –

3

Sólo una ligera corrección sobre los otros en SQL Server (prefijo esquema es cada vez más importante!):

SELECT name 
    FROM sys.columns 
    WHERE [object_id] = OBJECT_ID('dbo.tablename'); 
7

Microsoft SQL Server Management Studio 2008 R2:

En un editor de consultas, si resalta el texto del nombre de la tabla (ex dbo.MyTable) y pulsa ALT +F1, obtendrá una lista de nombres de columna, tipo, duración, etc.

ALT +F1 mientras que haya resaltado dbo.MyTable es el equivalente a correr EXEC sp_help 'dbo.MyTable'according to this site

no puedo conseguir las variaciones en la consulta INFORMATION_SCHEMA.COLUMNS para trabajar, por lo que usar esto en su lugar.

+0

No funcionó en SSMS 2012. ¿Qué significa SQL Server Management Studio 2008? –

+0

Sí, más precisamente, me refiero a Microsoft SQL Server Management Studio 2008 R2. Voy a editar – Leslie

+0

Alt + F1 funciona muy bien. +1. –

4

Para SQL Server

sp_help tablename 
26

Sé que es tarde, pero yo uso este comando para Oracle:

select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx' 
+1

Mejor tarde que nunca =) – golem

+0

http://stackoverflow.com/questions/8739203/oracle-query-to-fetch-column-names/8739400#8739400 – zloctb

1

Ejemplo:

select Table_name as [Table] , column_name as [Column] , Table_catalog as [Database], table_schema as [Schema] from information_schema.columns 
where table_schema = 'dbo' 
order by Table_name,COLUMN_NAME 

Sólo mi código

21

(5 años más tarde, f o el honor de PostgreSQL, el más avanzado de la BBDD del Reino)

En PostgreSQL:

\d table_name 

O, utilizando SQL:

select column_name, data_type, character_maximum_length 
    from INFORMATION_SCHEMA.COLUMNS 
    where table_name = 'table_name'; 
+4

debe ser \ d table_name. \ dt table_name enumera las relaciones. – l85m

Cuestiones relacionadas