¿Cómo obtener los nombres de todas las columnas para todas las tablas en MySQL?


189

¿Existe una forma rápida de obtener todos los nombres de columna de todas las tablas MySQL, sin tener que enumerar todas las tablas?


2
Solo necesito una descripción general rápida de la base de datos. No va a ser código en una aplicación.
dieter

Respuestas:


304
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position

eso era lo que estaba buscando :-) Escribí una aplicación Java haciendo lo mismo por ahora
dieter

¡Gracias! Para obtener solo los nombres de columna, use esto: seleccione column_name de information_schema.columns donde table_schema = 'your_db' ordene por table_name, ordinal_position
Phil Goetz

Exactamente lo que estaba buscando ! Gracias.
zookastos

¿Qué tal obtener el recuento de datos rellenos delante de los nombres de columna? Tengo el mismo problema más el recuento de datos
Gulmuhammad Akbari,

¿Qué tal saber la clave primaria?
David Walser

48

Para enumerar todos los campos de una tabla en MySQL:

select * 
  from information_schema.columns 
 where table_schema = 'your_DB_name' 
   and table_name = 'Your_tablename'

27
SELECT * FROM information_schema.columns
WHERE table_schema = DATABASE()
ORDER BY table_name, ordinal_position

Como no tengo suficiente representante para comentar, aquí hay una pequeña mejora (en mi opinión) sobre la excelente respuesta de nick rulez: reemplazar WHERE table_schema = 'your_db'con WHERE table_schema = DATABASE().


Eso es útil Siempre me molesta codificar cosas así cuando se puede evitar. Gracias.
David

27

es mejor que use la siguiente consulta para obtener todos los nombres de columna fácilmente

Show columns from tablename


A veces necesitas una solución que no se base en información_esquema
Bradley M. Davis

17

En el caso de que sea útil para cualquier otra persona, esto le dará una lista delimitada por comas de las columnas en cada tabla:

SELECT table_name,GROUP_CONCAT(column_name ORDER BY ordinal_position)
FROM information_schema.columns
WHERE table_schema = DATABASE()
GROUP BY table_name
ORDER BY table_name

Nota: Cuando use tablas con un gran número de columnas y / o con nombres de campo largos, tenga en cuenta el límite group_concat_max_len , que puede hacer que los datos se trunquen.


1
Me gusta este ... ya que podría copiar fácilmente todos los nombres de columna.
jatazoulja 01 de

6
<?php
        $table = 'orders';
        $query = "SHOW COLUMNS FROM $table";
        if($output = mysql_query($query)):
            $columns = array();
            while($result = mysql_fetch_assoc($output)):
                $columns[] = $result['Field'];
            endwhile;
        endif;
        echo '<pre>';
        print_r($columns);
        echo '</pre>';
?>

1
Cualquiera que lea esto en 2016: mysql_query ha quedado en desuso. Lo mejor es usar mysqli de PHP en el futuro.
JCutting8


4

La pregunta fue:

¿Existe una forma rápida de obtener todos los NOMBRES DE COLUMNA de todas las tablas en MySQL, sin tener que enumerar todas las tablas?

SQL para obtener toda la información para cada columna

select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position

SQL para obtener todos los NOMBRES DE COLUMNA

select COLUMN_NAME from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position

3

Escribí esta tontería hace mucho tiempo y todavía la uso de vez en cuando:

https://gist.github.com/kphretiq/e2f924416a326895233d

Básicamente, hace un "MOSTRAR TABLAS", luego un "DESCRIBE" en cada mesa, luego lo escupe como rebaja.

Simplemente edita debajo del " nombre if " y listo. Necesitarás tener pymysql instalado.


3

Piggybacking en la respuesta de Nicola con un php legible

$a = mysqli_query($conn,"select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position");
$b = mysqli_fetch_all($a,MYSQLI_ASSOC);
$d = array();
foreach($b as $c){
    if(!is_array($d[$c['TABLE_NAME']])){
        $d[$c['TABLE_NAME']] = array();
    }
    $d[$c['TABLE_NAME']][] = $c['COLUMN_NAME'];
}
echo "<pre>",print_r($d),"</pre>";

1
'php legible'. Nombrar variables con a, b, c no es lo que yo llamaría legible
Kaymaz
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.