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

189

Apakah ada cara cepat untuk memasukkan semua nama kolom dari semua tabel MySQL, tanpa harus mendaftar semua tabel?

pelaku diet
sumber
2
Saya hanya perlu ikhtisar singkat atas database. Itu tidak akan menjadi kode dalam aplikasi.
pelaku diet

Jawaban:

304
select * from information_schema.columns
where table_schema = 'your_db'
order by table_name,ordinal_position
Nicola Cossu
sumber
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'
suganya
sumber
27

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

Show columns from tablename

satpute rajesh
sumber
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().

appel
sumber
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.

trapper_hag
sumber
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>';
?>
Ali Nawaz
sumber
1
Siapa pun yang membaca ini di 2016 - mysql_query telah menjadi usang. Cara terbaik menggunakan mysqli PHP untuk maju.
JCutting8
5

Mirip dengan jawaban yang diposting oleh @suganya ini tidak langsung menjawab pertanyaan tetapi merupakan alternatif yang lebih cepat untuk satu tabel:

DESCRIBE column_name;
Philip Kirkbride
sumber
Ini akan mencetak tabel dan bukan hanya nama kolom tabel.
k0pernikus
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
J.BizMai
sumber
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.

lysdexia
sumber
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>";
Scot Nery
sumber
1
'some readable php' .. Menamai variabel dengan a, b, c bukanlah apa yang saya sebut dapat dibaca
Kaymaz