How to get all columns' names for all the tables in MySQL?

前端 未结 10 2237
你的背包
你的背包 2020-11-28 01:13

Is there a fast way of getting all column names from all tables in MySQL, without having to list all the tables?

相关标签:
10条回答
  • 2020-11-28 01:41
    SELECT * FROM information_schema.columns
    WHERE table_schema = DATABASE()
    ORDER BY table_name, ordinal_position
    

    Since I don't have enough rep to comment, here's a minor improvement (in my view) over nick rulez's excellent answer: replacing WHERE table_schema = 'your_db' with WHERE table_schema = DATABASE().

    0 讨论(0)
  • 2020-11-28 01:46

    Piggybacking on Nicola's answer with some readable php

    $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>";
    
    0 讨论(0)
  • 2020-11-28 01:47
    <?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>';
    ?>
    
    0 讨论(0)
  • 2020-11-28 01:51

    Similar to the answer posted by @suganya this doesn't directly answer the question but is a quicker alternative for a single table:

    DESCRIBE column_name;
    
    0 讨论(0)
  • 2020-11-28 01:54

    The question was :

    Is there a fast way of getting all COLUMN NAMES from all tables in MySQL, without having to list all the tables?

    SQL to get all information for each column

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

    SQL to get all COLUMN NAMES

    select COLUMN_NAME from information_schema.columns
    where table_schema = 'your_db'
    order by table_name,ordinal_position
    
    0 讨论(0)
  • 2020-11-28 01:55

    On the offchance that it's useful to anyone else, this will give you a comma-delimited list of the columns in each table:

    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
    

    Note : When using tables with a high number of columns and/or with long field names, be aware of the group_concat_max_len limit, which can cause the data to get truncated.

    0 讨论(0)
提交回复
热议问题