MySQL'deki tüm tablolar için tüm sütunların adları nasıl alınır?


189

Tüm tabloları MySQLlistelemek zorunda kalmadan, tüm tablolardan tüm sütun adlarını almanın hızlı bir yolu var mı ?


2
Sadece veritabanı üzerinde hızlı bir bakış gerekir. Bir uygulamada kod olmayacak.
dieter

Yanıtlar:


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

aradığım şey buydu :-) Şimdiye kadar aynı şeyleri yapan bir java uygulaması yazdı
dieter

Teşekkürler! Yalnızca sütun adlarını almak için şunu kullanın: information_schema.columns'dan column_name'i seçin; burada table_schema = 'your_db' siparişini table_name, ordinal_position
Phil Goetz

Tam aradığım şey! Teşekkürler.
zookastos

Doldurulmuş veri sayısını sütun adlarının önüne almaya ne dersiniz? Aynı problem artı veri sayım var
Gulmuhammad Akbari

birincil anahtarı bilmeye ne dersiniz?
David Walser

48

MySQL'deki bir tablodaki tüm alanları listelemek için:

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

27

tüm sütun adlarını kolayca almak için aşağıdaki sorguyu kullanmanız daha iyidir

Show columns from tablename


Bazen information_schema'ya dayanmayan bir çözüme ihtiyaç duyarsınız
Bradley M. Davis

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

Değiştirilmesi: Ben yorumuna yeterince temsilcisi olmadığı için, burada nick RuLez mükemmel cevap üzerinde (Bence) küçük bir gelişmedir WHERE table_schema = 'your_db'ile WHERE table_schema = DATABASE().


Bu yararlı. Kaçınılabildiği zaman böyle şeyleri kodlamak beni her zaman rahatsız eder. Teşekkürler.
David

17

Başkaları için yararlı olması durumunda, bu size her bir tablodaki sütunların virgülle ayrılmış bir listesini verecektir:

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

Not: Çok sayıda sütuna ve / veya uzun alan adlarına sahip tablolar kullanırken , verilerin kesilmesine neden olabilecek group_concat_max_len sınırına dikkat edin .


1
Bunu beğendim ... tüm sütun adlarını kolayca kopyalayabildiğim için.
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
2016 yılında bunu okuyan herkes - mysql_query kullanımdan kaldırıldı. İleriye dönük PHP'nin mysqli kullanmak en iyisidir.
JCutting8


4

Soru şuydu:

Tüm tabloları listelemek zorunda kalmadan MySQL'deki tüm tablolardan tüm COLUMN NAMES'leri almanın hızlı bir yolu var mı?

Her sütun için tüm bilgileri almak için SQL

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

Tüm COLUMN NAMES'ları almak için SQL

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

3

Bu saçma şeyi uzun zaman önce yazdım ve hala şimdi ve sonra kullanıyorum:

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

Temel olarak, bir "GÖSTER TABLOLARI", ardından her tabloda bir "DESCRIBE" ifadesi, daha sonra bunu işaretleme olarak tükürür.

Sadece "if name " altında düzenleme yapın ve devam edin. Yüklü pymysql olması gerekir.


3

Bazı okunabilir php ile Nicola'nın cevabı üzerine piggybacking

$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
'Bazı okunabilir php' .. a, b, c ile değişkenleri adlandırmak okunabilir dediğim şey değil
Kaymaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.