Bagaimana cara menunjukkan nama kolom dari suatu tabel?

17

Kasingnya sederhana: Anda memiliki basis data MySQL di mana Anda hanya memiliki antarmuka kueri SQL dan Anda ingin mengetahui struktur basis data dengan kueri. Anda bisa daftar tabel dengan show tables;perintah, tetapi bagaimana Anda melihat nama-nama kolom individu?

( SELECTPernyataan menunjukkan Empty setjika tidak ada data dan TIDAK dapat digunakan.)

mico
sumber
Harap dicatat, solusi yang diterima adalah yang paling bawah tentang descperintah. Penasaran, ini adalah yang terpendek, tetapi memiliki suara paling sedikit. Bagi saya, itu juga yang terbaik.
mico
2
Anda meminta kueri SQL sederhana. Jawaban Anda bukan SQL, sehingga dapat menjelaskan jumlah suara yang rendah. Anda mungkin harus mengubah judul kueri menjadi: "Cara menunjukkan nama kolom dari sebuah tabel"
Lennart
Ide bagus, sekarang jawaban saya cocok dengan pertanyaan.
mico

Jawaban:

36
select column_name from information_schema.columns where table_name='table'
msi77
sumber
2
Sementara itu saya menemukan permintaan ini juga berguna: di show create table <table_name>mana alih-alih <table_name> Anda meletakkan nama tabel dalam teks biasa. Ini juga memberikan jenis sementara yang Anda cocok untuk tujuan daftar sangat baik.
mico
Seperti yang dikatakan oleh @mico: "show create table tbl_name \ G" mungkin solusi Anda. Lihat dev.mysql.com/doc/refman/5.7/id/show-create-table.html Bagian "\ G" di sini hanya untuk memformat output. Salam.
tdaget
6

Solusi terbaik yang saya temukan sendiri adalah desc table_nameperintah. Informasi lebih lanjut ada di Daftar Tabel MySQL . Perintah ini memberikan deskripsi satu tabel database, yang persis apa yang saya coba cari tahu.

mico
sumber
6

Untuk memastikan Anda mencantumkan kolom dalam tabel di database saat ini, gunakan fungsi DATABASE () atau SCHEMA () . Ini mengembalikan NULL jika Anda tidak dalam database saat ini. Kueri ini akan menampilkan kolom dalam tabel sesuai urutan kolom yang ditentukan:

SELECT column_name,column_type
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name='table'
ORDER BY ordinal_position;
RolandoMySQLDBA
sumber
3

Saya tidak yakin saya mengerti apa yang Anda maksud dengan judul tabel , tetapi Anda bisa mendapatkan sebagian besar informasi tentang tabel dan kolom mereka dari INFORMATION_SCHEMA

seekor kuda tanpa nama
sumber
3

bagaimana Anda melihat judul tabel individual?

Apakah maksud Anda komentar tabel ?

use stack;
create table t(v integer primary key) comment 'My Special Table';

show tables;
+-----------------+
| Tables_in_stack |
+-----------------+
| t               |
+-----------------+

select table_name, table_comment from information_schema.tables where table_name='t';
+------------+------------------+
| table_name | table_comment    |
+------------+------------------+
| t          | My Special Table |
+------------+------------------+
Jack Douglas
sumber
Saya ingin nama kolom itu dan sudah memiliki beberapa cara berkat jawaban cepat. Terima kasih tentang komentar ini juga, Jack.
mico
1
Apakah Anda keberatan menulis ulang pertanyaan Anda sedikit untuk membuatnya lebih jelas itu adalah kolom yang Anda cari?
Jack Douglas
2
SHOW COLUMNS FROM mydb.mytable;

di mana mydb - adalah database yang berisi tabel yang dibutuhkan

mytable - adalah tabel yang dibutuhkan

Ini mengembalikan info kolom (misalnya nama kolom, jenis, dll)

Rolya Chuma
sumber
1
Potongan kode kecil tanpa penjelasan tentang bagaimana mereka memecahkan masalah OP tidak disarankan. Silakan coba tambahkan rincian lebih lanjut ke jawaban Anda.
Erik
0

Anda harus bergabung information_schema.tablesdan information_schema.columnsbersama - sama untuk mendapatkan daftar tabel dan detail kolomnya.

information_schema.columnstidak hanya menampilkan detail tentang tabel tetapi juga tampilan. Tidak ada cara untuk memfilter hanya detail tabel dari tampilan sistem ini.

Karenanya Anda harus bergabung.

Contoh permintaan:

select t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.COLUMN_TYPE, c.DATA_TYPE
from information_schema.tables t , information_schema.columns c where 2=2 
and t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_type ='BASE TABLE' 
order by t.table_schema, t.table_name, c.column_name 
;
Sundar Kannan
sumber