2011-04-13 46 views

Respuesta

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

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

+0

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

+0

Exactamente lo que estaba buscando! Gracias. –

31

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' 
5
<?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 obsoleto. Lo mejor es usar el mysqli de PHP en el futuro. – JCutting8

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

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

+0

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

2

de escribir este disparate hace mucho tiempo y en realidad todavía lo usan de vez en cuando:

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

Básicamente, se realiza una "VER LAS TABLAS", a continuación, un "describir" en cada mesa, luego lo escupe como un descuento.

Simplemente edite debajo del "si nombre" y vaya. Necesitarás tener instalado pymysql.

11

Por offchance que es útil para cualquier otra persona, esto le dará una lista separada por comas de las columnas de 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: Al usar tablas con un alto 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.

+0

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

14

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

Show columns from tablename

+2

Obtuve un resultado similar del comando: DESCRIBE tablename; – dkb

2

montándose sobre la respuesta de Nicola con un poco de 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>"; 
3

similares al answer posted by @suganya esto no responde directamente a la búsqueda iones, pero es una alternativa más rápida para una sola tabla:

DESCRIBE column_name; 
+0

Esto imprimirá una tabla y no solo los nombres de las columnas de la tabla. – k0pernikus

0

La pregunta era:

¿Hay una manera rápida de conseguir todos los nombres de las columnas de todas las tablas de MySQL, sin tener que enumerar todas las ¿mesas?

SQL para obtener toda la información de 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 
Cuestiones relacionadas