tutorial - mysql é gratuito




Como obter todos os nomes de colunas para todas as tabelas no MySQL? (7)

É melhor que você use a seguinte consulta para obter facilmente todos os nomes de coluna

Show columns from tablename

Existe uma maneira rápida de obter todos os nomes de coluna de todas as tabelas no MySQL , sem ter que listar todas as tabelas?


A questão era:

Existe uma maneira rápida de obter todos os NOMES DE COLUNA de todas as tabelas no MySQL, sem ter que listar todas as tabelas?

SQL para obter todas as informações para cada coluna

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

SQL para obter todos os NOMES DE COLUNA

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

No offchance que é útil para qualquer outra pessoa, isso lhe dará uma lista delimitada por vírgulas das colunas em cada tabela:

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: Ao usar tabelas com um número alto de colunas e / ou com nomes de campos longos, esteja ciente do limite group_concat_max_len , que pode fazer com que os dados sejam truncados.


Para listar todos os campos de uma tabela no MySQL:

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

Semelhante à resposta postada por @suganya, isso não responde diretamente à pergunta, mas é uma alternativa mais rápida para uma única tabela:

DESCRIBE column_name;

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

Desde que eu não tenho bastante representante para comentar, aqui está uma pequena melhoria (na minha opinião) sobre a excelente resposta do nick WHERE table_schema = 'your_db' : substituindo WHERE table_schema = 'your_db' com WHERE table_schema = DATABASE() .


<?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>';
?>




mysql