Bagaimana cara mendapatkan nama semua kolom untuk semua tabel di MySQL?


Jawaban:


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

itulah yang saya cari :-) Menulis aplikasi java melakukan hal yang sama sekarang
dieter

Terima kasih! Untuk mendapatkan hanya nama-nama kolom, gunakan ini: pilih column_name dari information_schema.columns di mana table_schema = pesanan 'your_db' dengan table_name, ordinal_position
Phil Goetz

Persis apa yang saya cari! Terima kasih.
zookastos

Bagaimana cara mendapatkan jumlah data yang diisi di depan nama kolom? Saya memiliki masalah yang sama ditambah jumlah data
Gulmuhammad Akbari

bagaimana dengan mengetahui kunci utama?
David Walser

48

Untuk mencantumkan semua bidang dari tabel di MySQL:

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

27

lebih baik Anda menggunakan kueri berikut untuk mendapatkan semua nama kolom dengan mudah

Show columns from tablename


Terkadang Anda membutuhkan solusi yang tidak bergantung pada information_schema
Bradley M. Davis

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

Karena saya tidak punya cukup perwakilan untuk berkomentar, berikut ini sedikit perbaikan (menurut saya) atas jawaban nick rulez yang sangat baik: ganti WHERE table_schema = 'your_db'dengan WHERE table_schema = DATABASE().


Itu sangat membantu. Itu selalu mengganggu saya untuk hal-hal seperti itu ketika itu bisa dihindari. Terima kasih.
David

17

Jika itu berguna bagi orang lain, ini akan memberi Anda daftar kolom yang dibatasi koma di setiap tabel:

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

Catatan: Saat menggunakan tabel dengan jumlah kolom yang tinggi dan / atau dengan nama bidang yang panjang, perhatikan batasan group_concat_max_len , yang dapat menyebabkan data terpotong.


1
Saya suka yang ini ... karena saya bisa dengan mudah menyalin semua nama kolom.
jatazoulja

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
Siapa pun yang membaca ini di 2016 - mysql_query telah menjadi usang. Cara terbaik menggunakan mysqli PHP untuk maju.
JCutting8


4

Pertanyaannya adalah:

Apakah ada cara cepat untuk mendapatkan semua NAMA KOLOM dari semua tabel di MySQL, tanpa harus mendaftar semua tabel?

SQL untuk mendapatkan semua informasi untuk setiap kolom

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

SQL untuk mendapatkan semua NAMA KOLOM

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

3

Saya menulis hal konyol ini sejak lama dan masih menggunakannya sampai sekarang:

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

Pada dasarnya, ia melakukan "SHOW TABLES", lalu "DESCRIBE" pada setiap tabel, lalu meludahkannya sebagai penurunan harga.

Cukup edit di bawah "jika nama " dan pergi. Anda harus menginstal pymysql.


3

Membonceng jawaban Nicola dengan beberapa php yang bisa dibaca

$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
'some readable php' .. Menamai variabel dengan a, b, c bukanlah apa yang saya sebut dapat dibaca
Kaymaz
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.