¿Cómo mostrar los nombres de columna de una tabla?

17

El caso es simple: tiene una base de datos MySQL donde solo tiene una interfaz de consulta SQL y desea conocer la estructura de la base de datos con consultas. Puede enumerar tablas con show tables;comando, pero ¿cómo ve los nombres de las columnas individuales?

(la SELECTdeclaración muestra Empty setsi no hay datos presentes y NO se puede usar así).

mico
fuente
Tenga en cuenta que la solución aceptada es la inferior sobre el desccomando. Curioso, es el más corto, pero tiene menos votos. Para mí, también es el mejor.
mico
2
solicitó una consulta SQL simple. Su respuesta no es SQL, por lo que puede explicar el bajo número de votos. Probablemente debería cambiar el título de su consulta a: "Cómo mostrar los nombres de columna de una tabla"
Lennart
Buena idea, ahora mi respuesta coincide mejor con la pregunta.
mico

Respuestas:

36
select column_name from information_schema.columns where table_name='table'
msi77
fuente
2
Mientras tanto, descubrí que esta consulta también es útil: show create table <table_name>donde en lugar de <table_name> pones el nombre de la tabla en texto plano. Esto también proporciona los tipos, mientras que su uno se adapta muy bien para un propósito de listado.
mico
Como dijo @mico: "show create table tbl_name \ G" podría ser su solución. Consulte dev.mysql.com/doc/refman/5.7/en/show-create-table.html La parte "\ G" está aquí solo para formatear la salida. Saludos.
Tdaget
6

La mejor solución que descubrí por mí mismo fue el desc table_namecomando. Hay más información en la Lista de tablas MySQL . Este comando proporciona la descripción de una tabla de base de datos, que es exactamente lo que estaba tratando de averiguar.

mico
fuente
6

Para asegurarse de enumerar las columnas en una tabla en la base de datos actual, use la función BASE DE DATOS () o ESQUEMA () . Devuelve NULL si no está en una base de datos actual. Esta consulta mostrará las columnas en una tabla en el orden en que se definieron las columnas:

SELECT column_name,column_type
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name='table'
ORDER BY ordinal_position;
RolandoMySQLDBA
fuente
3

No estoy seguro de entender a qué te refieres con los títulos de las tablas , pero puedes obtener la mayor parte de la información sobre las tablas y sus columnas en INFORMATION_SCHEMA

un caballo sin nombre
fuente
3

¿Cómo ves los títulos de las tablas individuales?

¿Te refieres a los comentarios de la mesa ?

use stack;
create table t(v integer primary key) comment 'My Special Table';

show tables;
+-----------------+
| Tables_in_stack |
+-----------------+
| t               |
+-----------------+

select table_name, table_comment from information_schema.tables where table_name='t';
+------------+------------------+
| table_name | table_comment    |
+------------+------------------+
| t          | My Special Table |
+------------+------------------+
Jack Douglas
fuente
Quería esos nombres de columna y ya tengo un par de formas gracias a las respuestas rápidas. Gracias por este comentario también, Jack.
mico
1
¿Te importaría volver a redactar un poco tu pregunta para aclarar que lo que buscas son las columnas?
Jack Douglas
2
SHOW COLUMNS FROM mydb.mytable;

donde mydb es la base de datos que contiene la tabla necesaria

mytable - es la tabla necesaria

Devuelve información de columnas (por ejemplo, nombres de columnas, tipo, etc.)

Rolya Chuma
fuente
1
Se desaconsejan pequeños fragmentos de código sin explicación de cómo resuelven el problema del OP. Intenta agregar más detalles a tu respuesta.
Erik
0

Debe unirse information_schema.tablesy unirse information_schema.columnspara obtener la lista de tablas y los detalles de sus columnas.

information_schema.columnsno solo muestra detalles sobre tablas sino también vistas. No hay forma de filtrar solo los detalles de la tabla desde esta vista del sistema.

Por lo tanto, debes unirte.

Consulta de ejemplo:

select t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.COLUMN_TYPE, c.DATA_TYPE
from information_schema.tables t , information_schema.columns c where 2=2 
and t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_type ='BASE TABLE' 
order by t.table_schema, t.table_name, c.column_name 
;
Sundar Kannan
fuente